Когда я обновился до самой последней версии numpy, большая часть моего кода сломалась, потому что теперь каждый раз, когда я вызываю np.dot()
для матрицы и массива, он возвращает матрицу 1xn, а не просто массив. Это вызывает у меня ошибку, когда я пытаюсь умножить новый вектор/массив на матрицу
пример
A = np.matrix( [ [4, 1, 0, 0], [1, 5, 1, 0], [0, 1, 6, 1], [1, 0, 1, 4] ] )
x = np.array([0, 0, 0, 0])
print(x)
x1 = np.dot(A, x)
print(x1)
x2 = np.dot(A, x1)
print(x2)
output:
[0 0 0 0]
[[0 0 0 0]]
Traceback (most recent call last):
File "review.py", line 13, in <module>
x2 = np.dot(A, x1)
ValueError: shapes (4,4) and (1,4) not aligned: 4 (dim 1) != 1 (dim 0)
Я ожидаю, что либо точка матрицы и вектора вернет вектор, либо точка матрицы и матрица 1xn будут работать, как ожидалось.
Использование транспонирования x не исправляет это, равно как и использование A @ x
или A.dot(x)
или любого другого варианта np.matmul(A, x)
.
matrix
навсегда. - person Paul Panzer   schedule 22.05.2019