Cho một 3 lần 3 NumPy mảngLàm thế nào để chuẩn hóa một mảng numpy 2 chiều trong python ít tiết?
a = numpy.arange(0,27,3).reshape(3,3)
# array([[ 0, 3, 6],
# [ 9, 12, 15],
# [18, 21, 24]])
Để bình thường hóa các hàng của mảng 2 chiều tôi nghĩ
row_sums = a.sum(axis=1) # array([ 9, 36, 63])
new_matrix = numpy.zeros((3,3))
for i, (row, row_sum) in enumerate(zip(a, row_sums)):
new_matrix[i,:] = row/row_sum
Có phải là một cách tốt hơn, chứ không phải là có?
Có lẽ để làm rõ: Bằng cách chuẩn hóa ý tôi, tổng của các mục nhập mỗi hàng phải là một. Nhưng tôi nghĩ điều đó sẽ rõ ràng đối với hầu hết mọi người.
cẩn thận, "bình thường hóa" thường có nghĩa là * vuông * tổng của các thành phần là một. Định nghĩa của bạn hầu như không rõ ràng đối với hầu hết mọi người;) – coldfix