Tôi có hai ma trận
a = np.matrix([[1,2], [3,4]])
b = np.matrix([[5,6], [7,8]])
và tôi muốn có được sản phẩm khôn ngoan [[1*5,2*6], [3*7,4*8]]
, bằng
[[5,12], [21,32]]
Tôi đã thử
print(np.dot(a,b))
và
print(a*b)
nhưng cả hai đều cho kết quả
[[19 22], [43 50]]
là sản phẩm ma trận, không phải là sản phẩm khôn ngoan. Làm cách nào để có được sản phẩm thông minh (còn gọi là sản phẩm Hadamard) bằng các chức năng tích hợp sẵn?
a
và b
mảng không? Ngoài ra, trong câu hỏi của bạn ở trên, bạn đang sử dụng x
and y
for computation thay vì a
and b
. Đó chỉ là lỗi đánh máy?
@
để nhân ma trận với các mảng nhiều mảng, có nghĩa là hoàn toàn không có lý do chính đáng để sử dụng ma trận trên mảng.
a
và b
là danh sách. Họ sẽ làm việc trong np.dot
; nhưng không vào a*b
. Nếu bạn sử dụng np.array(a)
hoặc np.matrix(a)
, *
hoạt động nhưng với kết quả khác.
a
vàb
không phải kiểu ma trận của NumPy? Với lớp này,*
trả về sản phẩm bên trong, không trả về phần tử. Nhưng đối vớindarray
lớp thông thường ,*
có nghĩa là sản phẩm khôn ngoan.