Я пытаюсь построить представление класса матрицы, полное большинства нормальных математических операций. Я ударил с помощью операции скалярного умножения.Дублирование Python int * numpy.array поведение
Соответствующая часть кода выглядит следующим образом:
import numpy
class Matrix(object):
def __init__(self, array):
self.array = numpy.array(array, dtype=int)
def __mul__(self, other):
if type(other) == int:
return Matrix(other*self.array)
else:
raise ValueError("Can not multiply a matrix with {0}".format(type(other)))
Стандартный способ выражается скалярное умножение сА, где с является скаляром и А является матрицей, так c*A
в Python. Однако это не удается с TypeError: unsupported operand type(s) for *: 'int' and 'Matrix'
, а A*c
работает как ожидалось (обратите внимание на other*self.array
). Таким образом, я делаю вывод, что операнд * определен для int
и numpy.array
.
Что это за магия и как я могу воспроизвести поведение?
Спасибо! Это сработало. – Kendas