如何在numpy中基于数组构造矩阵?

时间:2012-03-20 00:56:47

标签: numpy

我正在尝试迭代地对一个数组执行一个函数,并创建一个由它返回的内容组成的矩阵。如果这是本机python,我会做的是:

[func(x, y) for y in xrange(Y)]

但如果我这样做,我需要用numpy.matrix()来包装它以对其进行矢量化。这样做的笨拙方式是什么?现在我正在初始化一个零矩阵,然后使用我从for循环得到的元素填充它,但这看起来效率很低。

1 个答案:

答案 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.])