我不知道你是否可以定义一个函数同时作用于一维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] ])
我知道第二个代码w不会产生我所追求的,但我只是想说出我在说什么。谢谢!
编辑:
我用上面的函数只是一个简单的例子。我想用真正的功能是这样的:
from numpy import linalg as LA
def F(Z):
#Z is an array of matrices
return LA.eigh(Z)[0]
所以我有3×3矩阵阵列,我想他们的特征值的输出数组。我想知道是否有可能以某种numpythonic的方式做到这一点,以便不必遍历数组。
切片可能会有所帮助:http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#basic-slicing-and-indexing – Divakar
'B = A [:,0] + A [:, 1] - A [:, 2]'? (假设你的意思是'我[2]'而不是'[2]')或者你可以使用'np.dot':你实质上是在这里做一个矩阵一矢量乘法。 –
'numpy'已经定义了一组基本的函数,这些函数对一个或多个数组的所有元素进行操作。有效的'numpy'代码结合了这些功能。把它想象成一堆“平行”的积木。在“串行”思考之前尝试使用它们(循环遍历“标量”函数)。 – hpaulj