Biểu mẫu khác để lập chỉ mục bằng Python

Oct 08 2020

Tôi đang theo một khóa học về Học máy và trong một bài đánh giá về thư viện numpy, một phương pháp lập chỉ mục được sử dụng mà tôi chưa từng thấy trước đây. Chúng tôi đã xác định a = np.array([[1,2],[3,4],[5,6]]). Hai mảng mới sau đó được tạo ra: np.array([a[0,0], a[1,1], a[2,1]]. Đây là cách lập chỉ mục mà tôi biết. Cách lập chỉ mục mà tôi không biết là thế này: print(a[[0,1,2],[0,1,1]]). Ai đó có thể giúp tôi giải thích về hình thức lập chỉ mục mới nhất này không?

Trả lời

1 Marat Oct 08 2020 at 05:15

Khi ncác mảng được chuyển qua, ở đâu nlà số kích thước mảng, chúng được sử dụng làm chỉ mục cho các kích thước tương ứng. a[[0,1,2],[0,1,1]]tương đương với[a[0,0], a[1,1], a[2,1]]

Hãy để tôi trích dẫn tài liệu numpy :

... Từ mỗi hàng, một phần tử cụ thể sẽ được chọn. Chỉ số hàng chỉ là [0, 1, 2] và chỉ số cột chỉ định phần tử để chọn cho hàng tương ứng, ở đây là [0, 1, 0]. Sử dụng cả hai cùng nhau, tác vụ có thể được giải quyết bằng cách sử dụng lập chỉ mục nâng cao:

x = np.array([[1, 2], [3, 4], [5, 6]])

x[[0, 1, 2], [0, 1, 0]]
array([1, 4, 5])
1 Gabitohh Oct 08 2020 at 05:29

Nó gọi lập chỉ mục mảng số nguyên . Trong ví dụ của bạn, bạn đang cộng dồn [[0,1,2],[0,1,1]]các chỉ mục của mảng 1x3, được gọi a. Nó có nghĩa là, bạn đang nhận được từ a:

[
    the first element of the first array,contained in this 1x3 array,
    the second element of the second array, contained in this big array,
    the second element of the third array, contained in the same array
]

In ra, bạn sẽ nhận được đầu ra của [1 4 6], bởi vì đó là những yếu tố ở các vị trí quy định ( (0,0), (1,1), (2,1)). Bạn có thể hình dung nó giống như một lược đồ cột và hàng :

[[rows],[colums]] # vertically speaking

Bạn chọn các hàng của các mục bạn muốn trong mảng con đầu tiên và các cột trong mảng thứ hai.