Giả sử tôi có một ma trận bao gồm một danh sách liệt kê như sau:ma trận Sub của một danh sách liệt kê (không NumPy)
>>> LoL=[list(range(10)) for i in range(10)]
>>> LoL
[[0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9], [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]]
Giả, cũng có thể, rằng tôi có một ma trận NumPy của cấu trúc tương tự được gọi là LoLa
:
>>> LoLa=np.array(LoL)
Sử dụng numPy, tôi có thể có được một submatrix của ma trận này như thế này:
>>> LoLa[1:4,2:5]
array([[2, 3, 4],
[2, 3, 4],
[2, 3, 4]])
tôi có thể replic ăn miếng NumPy ma trận trong tinh khiết Python như vậy:
>>> r=(1,4)
>>> s=(2,5)
>>> [LoL[i][s[0]:s[1]] for i in range(len(LoL))][r[0]:r[1]]
[[2, 3, 4], [2, 3, 4], [2, 3, 4]]
nào không phải là điều đơn giản nhất trên thế giới để đọc cũng không phải :-) hiệu quả nhất
Câu hỏi: Có một cách dễ dàng hơn (trong tinh khiết Python) để cắt một ma trận tùy ý thành ma trận phụ?
Phần thứ hai * hoàn toàn * đánh cắp câu trả lời của tôi! :-)) +1 – dawg
Chúc mừng, @drewk; tiếp theo là tất cả của bạn :) – unutbu