tôi có:NumPy mảng lập chỉ mục với các danh sách và mảng
>>> a
array([[1, 2],
[3, 4]])
>>> type(l), l # list of scalers
(<type 'list'>, [0, 1])
>>> type(i), i # a numpy array
(<type 'numpy.ndarray'>, array([0, 1]))
>>> type(j), j # list of numpy arrays
(<type 'list'>, [array([0, 1]), array([0, 1])])
Khi tôi làm
>>> a[l] # Case 1, l is a list of scalers
tôi nhận được
array([[1, 2],
[3, 4]])
có nghĩa lập chỉ mục chỉ xảy ra trên trục 0.
Nhưng khi tôi làm
>>> a[j] # Case 2, j is a list of numpy arrays
tôi nhận được
array([1, 4])
có nghĩa lập chỉ mục đã xảy ra dọc theo trục 0 và trục 1.
Q1: Khi được sử dụng để lập chỉ mục, tại sao có sự khác biệt trong việc xử lý danh sách các scalers và danh sách các mảng có nhiều mảng? (Trường hợp 1 so với Trường hợp 2). Trong trường hợp 2, tôi đã hy vọng để xem chỉ mục chỉ xảy ra dọc theo trục 0 và nhận được
array([[[1,2],
[3,4]],
[[1,2],
[3,4]]])
Bây giờ, khi sử dụng mảng NumPy mảng thay vì
>>> j1 = np.array(j) # numpy array of arrays
Kết quả dưới đây chỉ ra rằng indexing xảy ra chỉ cùng trục 0 (như mong đợi)
>>> a[j1] Case 3, j1 is a numpy array of numpy arrays
array([[[1, 2],
[3, 4]],
[[1, 2],
[3, 4]]])
Q2: Khi sử dụng cho lập chỉ mục, tại sao lại có sự khác biệt trong điều trị các danh sách các mảng numPy và n mảng umpy của mảng numpy? (Trường hợp 2 so với Trường hợp 3)
Đối với Q1, không phải là số không tương tự không sử dụng Numpy để sử dụng 'k = [[0,1], [0,1]]; a [k] '? Trong trường hợp đó, bạn sẽ thấy cùng một hành vi giữa một danh sách các danh sách và một danh sách các mảng Numpy. –
Một cách khác để xem xét nó là '[a [jj] cho jj trong j]' cung cấp cho bạn những gì bạn mong đợi trong Q1. Nhập một danh sách các danh sách, cho dù một mảng Numpy hay không, về cơ bản là trả về một tập hợp các chỉ mục tại một thời điểm. –