作用于numpy数组的所有元素的函数?

时间:2016-07-23 20:03:52

标签: python arrays performance function numpy

我想知道你是否可以定义一个函数来同时处理一维numpy数组的所有元素,这样你就不必遍历数组了。例如,与您的方式类似,对数组的所有元素进行平方而不进行循环。我所追求的一个例子就是替换这段代码:

A = np.array([ [1,4,2], [5,1,8], [2,9,5], [3,6,6] ])
B = []

for i in A:
    B.append( i[0] + i[1] - i[2] )

B = array(B)
print B

输出:

>>> array([3, -2, 6, 3])

有类似的东西:

A = np.array([ [1,4,2], [5,1,8], [2,9,5], [3,6,6] ])

def F(Z):
    return Z[0] + Z[1] - Z[2]

print F(A)

这样输出就像:

>>> array( [ [3] , [-2], [6], [3] ] )

我知道第二段代码不会产生我想要的东西,但我只是想知道我在说什么。谢谢!

编辑:

我使用上面的函数就是一个简单的例子。我想要使​​用的实际功能是这样的:

 from numpy import linalg as LA

 def F(Z):
     #Z is an array of matrices
     return LA.eigh(Z)[0]

所以我有一个3x3矩阵的数组,我想要一个特征值的输出数组。而且我想知道是否可以用一些numpythonic方式做到这一点,以便不必循环遍历数组。

1 个答案:

答案 0 :(得分:3)

尝试:

np.apply_along_axis(F, 1, A)