Als mentioned here und here, das nicht mehr in numpy 1.7+ funktioniert:Neudefinition * = Operator in numpy
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
Eine Abhilfe ist zu tun:
def mult(a,b):
numpy.multiply(a, b, out=a, casting="unsafe")
def add(a,b):
numpy.add(a, b, out=a, casting="unsafe")
mult(A,B)
aber das ist viel zu lange für jede Matrixoperation schreiben!
Wie kann der Operator 0nepy *=
überschreiben, um dies standardmäßig zu tun?
Soll ich Unterklasse etwas?
'A * = B' erspart Ihnen nur 3 Zeichen über' mult (A, B) '. Können Sie artikulieren, warum Sie die kürzeste Methode haben müssen? – SethMMorton
@SethMMorton: * besser explizit als implizit *: '* =' ist Standard unter allen wichtigen Programmiersprachen; eine "mult" -Funktion zu definieren ist nicht natürlich – Basj
Was willst du, dass 'A' hier endet? – Eric