Ich habe ein Array von Form (10, 100000)
und eine Funktion f
, die ein Array von Form (100000,)
zu einem Array von Form (200,200)
nimmt. Was ist der einfachste Weg, um f
auf jede der 10 Zeilen anzuwenden, um ein Array von Form (10,200,200)
zu erhalten? Ich hatte gehofft, apply_along_axis
zu verwenden, aber es scheint, es wird nicht funktionieren, weil die Dimensionalität der Ausgabe von f
höher ist als die Dimensionalität des Eingangs.Wie mache ich numpy apply_along_axis, wenn die Funktion ein höherdimensionales Array zurückgibt?
(Allgemeiner gegeben, ein Array a
der Form (x1,...,xn,y1,...,ym)
und Funktion f
die (y1,...,ym)
auf Arrays von (z1,...,zp)
Form Arrays von Form annimmt, möchten Sie vielleicht f
zu den letzten m
Dimensionen a
, für jede Einstellung des anzuwenden erste n
Dimensionen von a
, eine Reihe von Form (x1,...,xn,z1,...,zp)
zu erhalten. Oder Sie können ein Problem haben, die einer dieser Form umgesetzt werden kann. Was ist der beste Weg, um Transformationen wie diese zu tun?)
Vielleicht möchten Sie in ['np.nditer'] (https://docs.scipy.org/doc/numpy/reference/generated/numpy.nditer.html) schauen – Eric
' np.ndindex' ist was Sie Notwendigkeit für eine partielle Iteration. – hpaulj
Wenn ich richtig verstehe, diese Funktionen nur iterieren, so würde ich noch irgendwie manuell das Ergebnis aufbauen müssen, das ich will. Tatsächlich scheint der Iterationsteil selbst so zu sein, als wäre es mit For-Schleifen genauso einfach zu machen, und vielleicht wäre der resultierende Code für Leute, die nicht mit den Feinheiten von Numpy vertraut sind, vielleicht offensichtlicher? – gmr