Ich frage mich, ob Sie eine Funktion definieren können, um gleichzeitig auf alle Elemente eines 1-d-Numpy-Arrays zu wirken, so dass Sie das Array nicht durchlaufen müssen. Ähnlich wie Sie beispielsweise alle Elemente eines Arrays ohne Loopen quadrieren können. Ein Beispiel dessen, was ich bin, ist nach diesen Code zu ersetzen:Funktion, die auf alle Elemente von numpy Array wirkt?
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
Ausgang:
>>> array([3, -2, 6, 3])
Mit so etwas wie:
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)
Damit der Ausgang ist so etwas wie:
>>> array([ [3] , [-2], [6], [3] ])
Ich kenne den 2. Code w Ich produziere nicht, wonach ich suche, aber ich versuche nur eine Vorstellung davon zu vermitteln, wovon ich spreche. Vielen Dank!
EDIT:
habe ich die Funktion oben nur als ein einfaches Beispiel. Die eigentliche Funktion Ich mag würde zu verwenden ist so etwas wie diese:
from numpy import linalg as LA
def F(Z):
#Z is an array of matrices
return LA.eigh(Z)[0]
ich ein Array von 3x3 Matrizen So habe, und ich würde eine Ausgang Array ihres Eigenwerts mag. Und ich frage mich, ob es möglich ist, dies auf irgendeine numptonische Weise zu tun, um nicht über das Array zu schleifen.
Slicing helfen könnten: http://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#basic-slicing-and-indexing – Divakar
'B = A [:, 0] + A [:, 1] - A [:, 2] '? (Angenommen, Sie meinten "i [2]' anstatt '[2]'.) Oder Sie könnten 'np.dot' verwenden: Sie machen hier im Wesentlichen eine Matrix-für-Vektor-Multiplikation. –
'numpy' hat bereits einen grundlegenden Satz von Funktionen definiert, die auf allen Elementen eines oder mehrerer Arrays funktionieren. Effizienter 'nummery' Code kombiniert diese Funktionen. Betrachten Sie es als eine Reihe von "parallelen" Bausteinen. Versuchen Sie, diese zu verwenden, bevor Sie auf das "serielle" Denken zurückgreifen (indem Sie eine Skalarfunktion durchlaufen). – hpaulj