我正在尝试迭代地对一个数组执行一个函数,并创建一个由它返回的内容组成的矩阵。如果这是本机python,我会做的是:
[func(x, y) for y in xrange(Y)]
但如果我这样做,我需要用numpy.matrix()来包装它以对其进行矢量化。这样做的笨拙方式是什么?现在我正在初始化一个零矩阵,然后使用我从for循环得到的元素填充它,但这看起来效率很低。
答案 0 :(得分:2)
查看numpy tutorial,特别是有关Universal Functions或ufuncs的部分。一个ufunc是:
在整个数组上逐个元素操作的函数。
这听起来像你要求的。请记住,您可能不需要编写自己的ufunc,但只需根据现有的ufunc编写func
。例如:
def hypot(a, b):
return np.sqrt(a**2 + b**2)
>>> a = np.array([3., 5., 10.])
>>> b = np.array([4., 12., 24.,])
>>> hypot(a, b)
array([ 5., 13., 26.])