【发布时间】:2013-01-08 14:31:44
【问题描述】:
我有一个一维数组
i = np.arange(0,7,1)
还有一个函数
# Returns a column matrix
def fn(i):
return np.matrix([[i*2,i*3]]).T
fnv = np.vectorize(fn)
然后写
fnv(i)
给我一个错误
File "<stdin>", line 1, in <module>
File "c:\Python33\lib\site-packages\numpy\lib\function_base.py",
line 1872, in __call__
return self._vectorize_call(func=func, args=vargs)
File "c:\Python33\lib\site-packages\numpy\lib\function_base.py",
line 1942, in _vectorize_call
copy=False, subok=True, dtype=otypes[0])
ValueError: setting an array element with a sequence.
我正在寻找的结果是一个具有两行和与输入数组一样多的列的矩阵。 numpy 中实现此目的的最佳表示法是什么?
例如 i 等于
[1,2,3,4,5,6]
输出等于
[[2,4,6,8,10,12],
[3,6,9,12,15,18]]
【问题讨论】:
-
你不应该使用 'input' 作为变量名,你能否展示一个预期输出的例子?
-
添加了一个示例输出,只是为了显示结构。这些值无关紧要,可以用 fn 内计算的任何值替换
-
你的函数和你的输出不匹配...
-
是的。 f(1) -> [2,3]' f(2) -> [4,6]' 等
-
有这么复杂吗?生成一系列列并以最快的方式将它们连接在一起以形成矩阵
标签: numpy vectorization