Multiply numpy int und float arrays

Ich möchte ein int16 Array aber ein float Array mit automatischer Rundung multiplizieren, aber das scheitert:

 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 

Ich bekomme:

TypeError: Kann nicht verteilen von ufunc multiplizieren von dtype ('float64') an dtype ('int16') mit Casting Regel 'same_kind'

3 Solutions collect form web for “Multiply numpy int und float arrays”

Sie könnten den broadcasting , um die beiden Arrays zu multiplizieren und nur den Integer-Teil wie folgt zu nehmen:

 In [2]: (A*B).astype(int) Out[2]: array([ 0, 4, 9, 16]) 

Timing-Einschränkungen:

 In [8]: %timeit (A*B).astype(int) 1000000 loops, best of 3: 1.65 µs per loop In [9]: %timeit np.multiply(A, B, out=A, casting='unsafe') 100000 loops, best of 3: 2.01 µs per loop 
 import numpy as np A = np.float_(A) A *= B 

Versuche dies. Ich denke, sind unterschiedliche Array-Typ Sie bekommen fehlschlagen

Besetzung

Sie können dies durch Ersetzen lösen

 A *= B 

mit

 A = (A * B) 

Oder mit

 numpy.multiply(A, B, out=A, casting='unsafe') 
  • Wie installiere ich Matplotlib als Macintosh Yosemite User
  • Wie viele Features können Handeln lernen?
  • Wie man Matrix in diagonale Matrix in numpy?
  • Lade eine bestimmte Anzahl von Zeilen von csv mit numpy
  • Numpy Matrix Multiplikationsfehler
  • Python: Gebrochener Toolchain-Fehler beim Installieren von Numpy
  • Numpy: Finde den ersten Wertindex schnell
  • Vektorisierte Indexierung / Slicing in numpy / scipy?
  • Installieren von SciPy und NumPy mit Pip
  • List-Verständnis mit numpy Arrays - schlechte Praxis?
  • Beschleunigung des Vergleichs von Schwimmern zwischen Listen
  • Python ist die beste Programmiersprache der Welt.