Langzeitleser, Erstverfasser.nicht unterstützte Operandentyp (en) für *: 'numpy.darray' und 'numpy.float64'
Ich suchte auf Google und Stack-Überlauf, aber war nicht wirklich in der Lage, eine allgemeine Antwort auf diese Frage zu finden.
Ich bekomme einen "nicht unterstützten Operandentyp (en) für *: 'numpy.darray' und 'numpy.float64'" Fehler in Python 2.7.3 mit numpy 1.6.2.
Der Fehler kommt von der Multiplikation eines numpy-Arrays und eines numpy float, aber es passiert nicht jedes Mal.
Zum Beispiel:
x = np.tan(1) # numpy.float64
y = np.array([0,1,2,3]) # numpy.ndarray
np.multiply(x,y) # works no problem
Oder
x = np.tan(np.abs(np.multiply(-31,41))) # numpy.float64
y = np.square(np.add(np.divide(np.zeros(100),42),(-27)**40)) # numpy.ndarray
np.multiply(x,y) # works no problem
Beide arbeiten
Jetzt für die Problemkinder:
np.multiply(np.square(np.add(np.divide(np.zeros(100),42),-27)**40)),
np.tan(np.abs(np.multiply(-31,41))))
oder mit x wie oben definiert:
np.multiply(np.square(np.add(np.divide(np.zeros(100),42),(-27)**40)),x)
produzieren sowohl den Fehler: NotImplemented
Ich weiß, dass die Zufallsfunktionen und Zahlen seltsam erscheinen, aber vom Konzept her sollte dies immer noch funktionieren, da sie beide arbeiteten, wenn sie einzeln auf Variablen gesetzt wurden.
Warum passiert das? Wie kann ich es in einem allgemeinen Sinn beheben?
Vielen Dank! Jason
Ich glaube, Sie einen Fehler im Code gefangen haben, möchten Sie vielleicht es die berichten numpige Leute. Wenn 'a'' np.darray' ist und 'x'' np.float64' ist, dann funktionieren sowohl 'x * a' als auch' a * x [...], aber keiner von 'a * x', 'a + x',' a/x' oder 'a-x' machen. Es ist schwer zu verstehen, warum, wenn die '__mul__' Methode von' a' nicht damit umgehen kann, '__rulul__' von' x' nicht aufgerufen wird, da es den Fall zu verstehen scheint ... – Jaime
Vielen Dank das für mich überprüfen. Ich werde versuchen, es als ein Problem in numpy zu melden. Denkst du, dass es einen Weg gibt, um dies zu umgehen? – Jason
Wenn Sie 'x' durch' x [...] 'ersetzen, funktioniert es, aber es ist ein hässlicher Hack ... – Jaime