Nội dung của ndarray có thể được truy cập và sửa đổi bằng index hoặc slice, 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. Ba loại phương pháp lập chỉ mục có sẵn – field access, basic slicing và advanced indexing.
Slice 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 slice trong Python được xây dựng bằng cách cung cấp các tham số bắt đầu, dừng và bước cho hàm slice tích hợp sẵn. Đối tượng slice 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]
Kết quả :
[2 4 6]
Trong ví dụ trên, một đối tượng ndarray được chuẩn bị bởi hàm arange (). Sau đó, một object slice đượ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 object slice 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.
Cũng có thể thu được kết quả tương tự 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 cho đối tượng ndarray.
Ví dụ 2 :
import numpy as np
a = np.arange(10)
b = a[2:7:2]
print b
Kết quả :
[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 tham số: đượ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
Kết quả :
5
Ví dụ 4 :
# slice items starting from index
import numpy as np
a = np.arange(10)
print a[2:]
Kết quả :
[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]
Kết quả :
[2 3 4]
Mô tả trên cũng áp dụng cho ndarray đa chiều.
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ả :
[[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ả :
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]]