gpt4 book ai didi

python - 正确使用 numpy.vectorize

转载 作者:行者123 更新时间:2023-11-30 22:14:16 28 4
gpt4 key购买 nike

我正在使用np.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])

这会导致以下错误:

ValueErrorTraceback (most recent call last)
in ()
----> 1 coords1 = vec_to_homo([0,1])

/home/lib/python2.7/site-packages/numpy/lib/function_base.pyc in call(self, *args, **kwargs)
2753 vargs.extend([kwargs[_n] for _n in names])
2754
-> 2755 return self._vectorize_call(func=func, args=vargs)
2756
2757 def _get_ufunc_and_otypes(self, func, args):

/home/lib/python2.7/site-packages/numpy/lib/function_base.pyc in _vectorize_call(self, func, args)
2832
2833 if ufunc.nout == 1:
-> 2834 res = array(outputs, copy=False, subok=True, dtype=otypes[0])
2835 else:
2836 res = tuple([array(x, copy=False, subok=True, dtype=t)

ValueError: setting an array element with a sequence.

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

我的代码片段与上面链接的文档中提供的示例非常接近,所以我真的不明白出了什么问题。

请帮忙。
谢谢!

最佳答案

您的问题如 this question 所示。 np.vectorize 仅适用于将 float 映射到 float 的函数,不适用于将 float 映射到 Numpy 数组的函数。

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

关于python - 正确使用 numpy.vectorize,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50573123/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com