Python 正确使用numpy.vecotrize

Python 正确使用numpy.vecotrize,python,numpy,vectorization,Python,Numpy,Vectorization,我正在使用 这将导致以下错误: ValueErrorTraceback(最近一次呼叫上次) in() ---->1 coords1=vec_to_homo([0,1]) /调用中的home/lib/python2.7/site-packages/numpy/lib/function_base.pyc(self,*args,**kwargs) 2753变量扩展([kwargs[\n]表示名称中的变量]) 2754 ->2755返回self.\u向量化\u调用(func=func,args=varg

我正在使用

这将导致以下错误:

ValueErrorTraceback(最近一次呼叫上次)
in()
---->1 coords1=vec_to_homo([0,1])

/调用中的home/lib/python2.7/site-packages/numpy/lib/function_base.pyc(self,*args,**kwargs)
2753变量扩展([kwargs[\n]表示名称中的变量])
2754
->2755返回self.\u向量化\u调用(func=func,args=vargs)
2756
2757定义获取和输出类型(self、func、args):

/home/lib/python2.7/site-packages/numpy/lib/function\u base.pyc in\u vectorize\u调用(self、func、args)
2832
2833如果ufunc.nout==1:
->2834 res=array(输出,copy=False,subok=True,dtype=otypes[0])
2835其他:
2836 res=tuple([array(x,copy=False,subok=True,dtype=t)

ValueError:使用序列设置数组元素

我理解错误信息,但我一生都找不到如何更改函数/调用矢量化来解决此问题。 如果我只传递一个整数,该函数将生成正确的结果,即
vec_to_homo(0)
生成
[0,1]

我的代码片段与上面链接的文档中提供的示例非常接近,因此我真的不知道哪里出了问题

请帮忙。
谢谢!

您的问题如中所示。
np.vectorize
仅适用于将浮点映射到浮点的函数,而不适用于将浮点映射到Numpy数组的函数

此外,
np.vectorize
不会加快代码的执行速度。您可以在函数中创建自己的逻辑来处理列表并使用理解、循环或类似方法返回2D数组。

您的问题与中一样。
np.vectorize
仅适用于将浮点映射到浮点的函数,而不是将浮点映射到Numpy arra的函数是的


此外,
np.vectorize
不会加快代码执行速度。您可以在函数内创建自己的逻辑,以处理列表并使用理解、循环或类似方法返回2D数组。

您不需要说明
矢量化的结果是什么。要使用返回数组的函数,
vectorize
需要
otypes=[对象]
签名
参数。向函数传递除标量以外的任何内容都需要
签名
。总体而言
矢量化
是一个棘手的问题-偶尔有用,但很容易被误用。您无法说出您期望的
矢量化
结果。要使用返回数组,
vectorize
需要
otypes=[object]
signature
参数。向函数传递除标量以外的任何内容都需要
signature
。总体而言
vectorize
是一个笨拙的拐杖-偶尔有用,但很容易误用。
def to_homogenous(x):
'''
Convert a point x to homogenous coordinates.
'''
return np.hstack((x,np.array([1]))).flatten()

vec_to_homo = np.vectorize(to_homogenous)
coords = vec_to_homo([0,1])