Giải pháp của JoshAdel sử dụng np.newaxis để thêm thứ nguyên. Một cách khác là sử dụng định hình lại () để căn chỉnh kích thước để chuẩn bị phát sóng .
data = np.array([[1,1,1],[2,2,2],[3,3,3]])
vector = np.array([1,2,3])
data
# array([[1, 1, 1],
# [2, 2, 2],
# [3, 3, 3]])
vector
# array([1, 2, 3])
data.shape
# (3, 3)
vector.shape
# (3,)
data / vector.reshape((3,1))
# array([[1, 1, 1],
# [1, 1, 1],
# [1, 1, 1]])
Thực hiện việc định hình lại () cho phép các kích thước xếp hàng để phát sóng:
data: 3 x 3
vector: 3
vector reshaped: 3 x 1
Lưu ý data/vector
là ổn, nhưng nó không giúp bạn có câu trả lời mà bạn muốn. Nó chia mỗi cột của array
(thay vì mỗi hàng ) cho mỗi phần tử tương ứng của vector
. Đó là những gì bạn sẽ nhận được nếu bạn được định hình lại một cách rõ ràng vector
để 1x3
thay thế 3x1
.
data / vector
# array([[1, 0, 0],
# [2, 1, 0],
# [3, 1, 1]])
data / vector.reshape((1,3))
# array([[1, 0, 0],
# [2, 1, 0],
# [3, 1, 1]])