我不知道你是否可以定義一個函數同時作用於一維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