Tôi đã xem xét tài liệu và cũng có các câu hỏi khác ở đây, nhưng có vẻ như tôi chưa bị treo trong các mảng cố định.Đặt một mảng có dải màu 2D
Tôi có một mảng NumPy, và vì lợi ích của đối số, để cho nó được định nghĩa như sau:
import numpy as np
a = np.arange(100)
a.shape = (10,10)
# array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
# [10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
# [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
# [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
# [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
# [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
# [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
# [70, 71, 72, 73, 74, 75, 76, 77, 78, 79],
# [80, 81, 82, 83, 84, 85, 86, 87, 88, 89],
# [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]])
bây giờ tôi muốn chọn hàng và cột của a
xác định bởi vectơ n1
và n2
. Như một ví dụ:
n1 = range(5)
n2 = range(5)
Nhưng khi tôi sử dụng:
b = a[n1,n2]
# array([ 0, 11, 22, 33, 44])
Sau đó, chỉ các yếu tố đường chéo thứ năm đầu tiên được lựa chọn, không phải là khối toàn bộ 5x5. Giải pháp tôi đã tìm thấy là làm như sau:
b = a[n1,:]
b = b[:,n2]
# array([[ 0, 1, 2, 3, 4],
# [10, 11, 12, 13, 14],
# [20, 21, 22, 23, 24],
# [30, 31, 32, 33, 34],
# [40, 41, 42, 43, 44]])
Nhưng tôi chắc chắn có cách để thực hiện tác vụ đơn giản này chỉ trong một lệnh.
Cảm ơn bạn đã giải thích. Trở nên quen thuộc hơn với MATLAB, tôi tìm thấy quy ước đặt cược trong một chút kỳ quặc, nhưng ít nhất bây giờ tôi biết làm thế nào để làm điều đó đúng. – CrossEntropy