Multiplizieren numpy int und float arrays: können Nicht umgewandelt ufunc multiplizieren Ausgabe von "dtype"
Möchte ich vermehren ein int16
array, sondern ein float
array mit automatischer Rundung, aber das schlägt fehl :
import numpy
A = numpy.array([1, 2, 3, 4], dtype=numpy.int16)
B = numpy.array([0.5, 2.1, 3, 4], dtype=numpy.float64)
A *= B
Bekomme ich:
TypeError: Cannot cast ufunc multiplizieren Ausgabe von dtype('float64') zu dtype('int16') mit casting-Regel "same_kind'
- Es scheint, es ist möglich, mit
numpy.multiply(A, B, out=A, casting='unsafe')
aber, dass der Weg viel länger syntax! Gibt es eine Möglichkeit, einzustellen, casting= "unsicher" in numpy standardmäßig? - Siehe github.com/numpy/numpy/pull/6499/files
Du musst angemeldet sein, um einen Kommentar abzugeben.
2 Möglichkeiten, um dieses Problem zu lösen:
Lösen können Sie dieses durch den Austausch
mit
oder mit
Könnten Sie
Rundfunk
, multiplizieren Sie die beiden Felder und nehmen Sie nur den ganzzahligen Teil wie folgt:Timing-Constraints:
numpy.multiply(A, B, out=A, casting='unsafe')
?A =
, aber ich denke immer, dass es sicherer ist, zu warten, bis der OP explizit deutlich machen, was Sie wollen, anstatt Annahmen.versuchen. Ich denke, dass sind verschiedene array-Typ, die Sie bekommen, scheitern.
Cast