NumPy - Lập chỉ mục & Cắt
Nội dung của đối tượng ndarray có thể được truy cập và sửa đổi bằng cách lập chỉ mục hoặc cắt, giống như các đối tượng chứa trong Python.
Như đã đề cập trước đó, các mục trong đối tượng ndarray tuân theo chỉ mục dựa trên số không. Có ba loại phương pháp lập chỉ mục:field access, basic slicing và advanced indexing.
Cắt lát cơ bản là một phần mở rộng của khái niệm cơ bản của Python về cắt thành n kích thước. Một đối tượng lát trong Python được xây dựng bằng cách chostart, stopvà step tham số tích hợp slicechức năng. Đối tượng lát cắt này được chuyển đến mảng để trích xuất một phần của mảng.
ví dụ 1
import numpy as np
a = np.arange(10)
s = slice(2,7,2)
print a[s]
Đầu ra của nó như sau:
[2 4 6]
Trong ví dụ trên, một ndarray đối tượng được chuẩn bị bởi arange()chức năng. Sau đó, một đối tượng lát cắt được xác định với các giá trị bắt đầu, dừng và bước tương ứng là 2, 7 và 2. Khi đối tượng lát cắt này được chuyển tới ndarray, một phần của nó bắt đầu với chỉ mục 2 đến 7 với bước 2 được cắt.
Kết quả tương tự cũng có thể đạt được bằng cách đưa các tham số cắt phân tách bằng dấu hai chấm: (start: stop: step) trực tiếp đến ndarray vật.
Ví dụ 2
import numpy as np
a = np.arange(10)
b = a[2:7:2]
print b
Ở đây, chúng ta sẽ nhận được cùng một đầu ra -
[2 4 6]
Nếu chỉ đặt một tham số, một mục tương ứng với chỉ mục sẽ được trả về. Nếu một: được chèn trước nó, tất cả các mục từ chỉ mục đó trở đi sẽ được trích xuất. Nếu hai tham số (với: giữa chúng) được sử dụng, các mục giữa hai chỉ mục (không bao gồm chỉ mục dừng) với bước một mặc định sẽ được cắt.
Ví dụ 3
# slice single item
import numpy as np
a = np.arange(10)
b = a[5]
print b
Đầu ra của nó như sau:
5
Ví dụ 4
# slice items starting from index
import numpy as np
a = np.arange(10)
print a[2:]
Bây giờ, đầu ra sẽ là -
[2 3 4 5 6 7 8 9]
Ví dụ 5
# slice items between indexes
import numpy as np
a = np.arange(10)
print a[2:5]
Ở đây, đầu ra sẽ là -
[2 3 4]
Mô tả trên áp dụng cho đa chiều ndarray quá.
Ví dụ 6
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print a
# slice items starting from index
print 'Now we will slice the array from the index a[1:]'
print a[1:]
Kết quả như sau:
[[1 2 3]
[3 4 5]
[4 5 6]]
Now we will slice the array from the index a[1:]
[[3 4 5]
[4 5 6]]
Slicing cũng có thể bao gồm dấu chấm lửng (…) để tạo một bộ lựa chọn có cùng độ dài với kích thước của một mảng. Nếu dấu chấm lửng được sử dụng ở vị trí hàng, nó sẽ trả về một mảng ndarray bao gồm các mục trong hàng.
Ví dụ 7
# array to begin with
import numpy as np
a = np.array([[1,2,3],[3,4,5],[4,5,6]])
print 'Our array is:'
print a
print '\n'
# this returns array of items in the second column
print 'The items in the second column are:'
print a[...,1]
print '\n'
# Now we will slice all items from the second row
print 'The items in the second row are:'
print a[1,...]
print '\n'
# Now we will slice all items from column 1 onwards
print 'The items column 1 onwards are:'
print a[...,1:]
Kết quả của chương trình này như sau:
Our array is:
[[1 2 3]
[3 4 5]
[4 5 6]]
The items in the second column are:
[2 4 5]
The items in the second row are:
[3 4 5]
The items column 1 onwards are:
[[2 3]
[4 5]
[5 6]]