Bạn có thể sử dụng slice chức năng và gọi nó với các danh sách biến thích hợp trong thời gian chạy như sau:
# Store the variables that represent the slice in a list/tuple
# Make a slice with the unzipped tuple using the slice() command
# Use the slice on your array
.210
Ví dụ:
>>> from numpy import *
>>> a = (1, 2, 3)
>>> b = arange(27).reshape(3, 3, 3)
>>> s = slice(*a)
>>> b[s]
array([[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]]])
Đây là giống như:
>>> b[1:2:3]
array([[[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17]]])
Cuối cùng, tương đương với không chỉ định bất cứ điều gì giữa 2 :
trong cách viết thông thường là đặt None
ở những nơi trong tuple bạn tạo nên.
Lập chỉ mục trong biểu mẫu 'x [something]' đồng nghĩa với việc gọi phương thức '__getitem__' của đối tượng. Ví dụ, mã trên của bạn tương đương với việc truyền tuple '(slice (None), slice (None), slice (None), slice (None), j, slice (None))' sang 'x .__ getitem __()' . –
@JoelCornett: Tại sao bạn sử dụng '__getitem __()' cho điều này? Lợi thế trên '[]' là gì? –
@SvenMarnach: Tôi sẽ không, tôi chỉ cảm thấy rằng OP sẽ được hưởng lợi từ việc hiểu khái niệm này. Câu trả lời cho câu hỏi của anh ta là tầm thường, nếu anh ta nhận ra nó chỉ là vấn đề chuyển các đối số cho một hàm. –