我想知道你是否可以定义一个函数来同时处理一维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方式做到这一点,以便不必循环遍历数组。
答案 0 :(得分:3)
尝试:
np.apply_along_axis(F, 1, A)