Mảng lát python theo giá trị

Trong phần này, chúng ta sẽ xem xét lập chỉ mục và cắt. Chúng hoạt động theo cách tương tự như lập chỉ mục và cắt với danh sách Python tiêu chuẩn, với một vài điểm khác biệt

Đây là một video bao gồm chủ đề này

Lập chỉ mục một mảng

Lập chỉ mục được sử dụng để lấy các phần tử riêng lẻ từ một mảng, nhưng nó cũng có thể được sử dụng để lấy toàn bộ hàng, cột hoặc mặt phẳng từ các mảng nhiều chiều

Lập chỉ mục trong 1 chiều

Chúng ta có thể tạo mảng numpy 1 chiều từ một danh sách như thế này

import numpy as np

a1 = np.array[[1, 2, 3, 4]]

print[a1]  # [1, 2, 3, 4]

Chúng ta có thể lập chỉ mục vào mảng này để lấy một phần tử riêng lẻ, hoàn toàn giống như một danh sách hoặc bộ thông thường

print[a1[0]] # 1
print[a1[2]] # 3

Lập chỉ mục trong 2 chiều

Chúng ta có thể tạo một mảng numpy 2 chiều từ danh sách danh sách python, như thế này

import numpy as np

a2 = np.array[[[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]]]

Đây là một sơ đồ của mảng

Chúng ta có thể lập chỉ mục một phần tử của mảng bằng cách sử dụng hai chỉ mục - i chọn hàng và j chọn cột

print[a2[2, 1]] # 8

Lưu ý cú pháp - các giá trị i và j đều nằm trong dấu ngoặc vuông, được phân tách bằng dấu phẩy [chỉ mục thực sự là một bộ [2, 1], nhưng sử dụng đóng gói bộ]. Ví dụ chọn hàng 2, cột 1, có giá trị 8. Điều này so sánh với cú pháp bạn có thể sử dụng với danh sách 2D [nghĩa là danh sách các danh sách]

v = [[1, 2, 3],
     [4, 5, 6],
     [7, 8, 9]]

print[v[2][1]] # 8

Chọn một hàng hoặc cột

Nếu chúng tôi có thể cung cấp một chỉ mục duy nhất, nó sẽ chọn một hàng [giá trị i] và trả về dưới dạng một mảng xếp hạng 1

print[a2[2]] # [7, 8, 9]

Điều đó khá giống với những gì sẽ xảy ra với danh sách 2D. Tuy nhiên, numpy cũng cho phép chúng tôi chọn một cột duy nhất

print[a2[:, 1]] # [2, 5, 8]

Chúng ta sẽ bỏ qua một chút để cắt lát, ở phần sau của hướng dẫn này, nhưng ý nghĩa của cú pháp này là

  • đối với giá trị i, lấy tất cả các giá trị [. là một lát đầy đủ, từ đầu đến cuối]
  • đối với giá trị j lấy 1

Đưa ra mảng này [2, 5, 8]

Mảng bạn nhận được khi lập chỉ mục hoặc cắt một mảng có nhiều mảng là dạng xem của mảng ban đầu. Đó là cùng một dữ liệu, chỉ được truy cập theo một thứ tự khác. Nếu bạn thay đổi khung nhìn, bạn sẽ thay đổi các phần tử tương ứng trong mảng ban đầu

Lập chỉ mục trong 3 chiều

Chúng ta có thể tạo một mảng numpy 3 chiều từ danh sách python gồm các danh sách, như thế này

import numpy as np

a3 = np.array[[[[10, 11, 12], [13, 14, 15], [16, 17, 18]],
               [[20, 21, 22], [23, 24, 25], [26, 27, 28]],
               [[30, 31, 32], [33, 34, 35], [36, 37, 38]]]]

Đây là một sơ đồ của mảng

Một mảng 3D giống như một chồng ma trận

  • Chỉ mục đầu tiên, i, chọn ma trận
  • Chỉ mục thứ hai, j, chọn hàng
  • Chỉ số thứ ba, k, chọn cột

Đây là sơ đồ tương tự, trải ra một chút để chúng ta có thể thấy các giá trị

Đây là cách lập chỉ mục một giá trị cụ thể trong mảng 3D

________số 8

Thao tác này chọn chỉ mục ma trận 2 [ma trận cuối cùng], hàng 0, cột 1, cho giá trị 31

Chọn một hàng hoặc cột trong mảng 3D

Bạn có thể truy cập bất kỳ hàng hoặc cột nào trong mảng 3D. Có 3 trường hợp

Trường hợp 1 - chỉ định hai chỉ số đầu tiên. Trong trường hợp này, bạn đang chọn giá trị i [ma trận] và giá trị j [hàng]. Điều này sẽ chọn một hàng cụ thể. Trong ví dụ này, chúng tôi đang chọn hàng 2 từ ma trận 1

print[a3[1, 2]] # [26 27 28]

Trường hợp 2 - chỉ định giá trị i [ma trận] và giá trị k [cột], sử dụng một lát cắt đầy đủ [. ] cho giá trị j [hàng]. Điều này sẽ chọn một cột cụ thể. Trong ví dụ này, chúng tôi đang chọn cột 1 từ ma trận 0

print[a1[0]] # 1
print[a1[2]] # 3
0

Trường hợp 3 - chỉ định giá trị j [hàng] và giá trị k [cột], sử dụng một lát cắt đầy đủ [. ] cho giá trị i [ma trận]. Điều này sẽ tạo một hàng bằng cách lấy cùng một phần tử từ mỗi ma trận. Trong trường hợp này, chúng tôi đang lấy hàng 1, cột 2 từ mỗi ma trận

print[a1[0]] # 1
print[a1[2]] # 3
1

Chọn một ma trận trong một mảng 3D

Nếu chúng ta chỉ xác định chỉ mục i, numpy sẽ trả về ma trận tương ứng. Ta sẽ gọi trường hợp này là 1. Trong ví dụ này, chúng tôi sẽ yêu cầu ma trận 2

print[a1[0]] # 1
print[a1[2]] # 3
2

Trường hợp 2 nếu chúng ta chỉ xác định giá trị j [sử dụng một lát cắt đầy đủ cho các giá trị i], chúng ta sẽ thu được một ma trận được tạo từ hàng đã chọn được lấy từ mỗi mặt phẳng. Trong ví dụ này, chúng tôi sẽ lấy hàng 1

print[a1[0]] # 1
print[a1[2]] # 3
3

Trường hợp 3 nếu chúng ta chỉ xác định giá trị k [sử dụng các lát cắt đầy đủ cho các giá trị i và j], chúng ta sẽ thu được một ma trận được tạo từ cột đã chọn được lấy từ mỗi mặt phẳng. Trong ví dụ này, chúng tôi sẽ lấy cột 0

print[a1[0]] # 1
print[a1[2]] # 3
4

Cắt một mảng

Bạn có thể cắt một mảng có nhiều mảng là một cách tương tự để cắt một danh sách - ngoại trừ bạn có thể thực hiện việc đó theo nhiều chiều

Cũng giống như lập chỉ mục, mảng bạn nhận được khi lập chỉ mục hoặc cắt một mảng có nhiều mảng là dạng xem của mảng ban đầu. Đó là cùng một dữ liệu, chỉ được truy cập theo một thứ tự khác. Điều này khác với danh sách, trong đó một lát cắt trả về một danh sách hoàn toàn mới

Danh sách cắt lát - một bản tóm tắt

Chỉ là một bản tóm tắt nhanh về cách cắt hoạt động với danh sách Python bình thường. Giả sử chúng ta có một danh sách

print[a1[0]] # 1
print[a1[2]] # 3
5

Chúng ta có thể sử dụng cắt lát để lấy một danh sách phụ, như thế này

print[a1[0]] # 1
print[a1[2]] # 3
6

Ký hiệu lát chỉ định giá trị bắt đầu và kết thúc [bắt đầu. end] và sao chép danh sách từ đầu đến cuối nhưng không bao gồm phần cuối

Chúng ta có thể bỏ qua phần bắt đầu, trong trường hợp đó, phần bắt đầu ở đầu danh sách. Chúng ta có thể bỏ qua phần cuối, vì vậy lát tiếp tục đến cuối danh sách. Nếu chúng ta bỏ qua cả lát cắt được tạo là một bản sao của toàn bộ danh sách

print[a1[0]] # 1
print[a1[2]] # 3
7

Một điều cuối cùng cần lưu ý là sự khác biệt giữa chỉ mục và lát cắt có độ dài 1

print[a1[0]] # 1
print[a1[2]] # 3
8

Chỉ mục trả về một phần tử của mảng, lát cắt trả về danh sách một phần tử

Cắt mảng numpy 1D

Cắt một mảng numpy 1D gần giống hệt như cắt một danh sách

print[a1[0]] # 1
print[a1[2]] # 3
9

Điều duy nhất cần nhớ nếu [không giống như danh sách] a1 và b đều đang xem cùng một dữ liệu cơ bản [b là chế độ xem dữ liệu]. Vì vậy, nếu bạn thay đổi một phần tử trong b, a1 sẽ bị ảnh hưởng [và ngược lại]

import numpy as np

a2 = np.array[[[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]]]
0

Cắt một mảng 2D

Bạn có thể cắt mảng 2D theo cả hai trục để thu được tập hợp con hình chữ nhật của mảng ban đầu. Ví dụ

import numpy as np

a2 = np.array[[[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]]]
1

Điều này chọn hàng 1. [1 đến cuối mảng] và cột 2. 4 [cột 2 và 3], như được hiển thị ở đây

Cắt một mảng 3D

Bạn có thể cắt một mảng 3D theo cả 3 trục để thu được tập hợp con hình khối của mảng ban đầu

import numpy as np

a2 = np.array[[[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]]]
2

cái này chọn

  • máy bay. 2 [2 mặt phẳng đầu tiên]
  • hàng 1. [2 hàng cuối]
  • cột. 2 [2 cột đầu tiên]

Như được hiển thị ở đây

lát đầy đủ

Tất nhiên, bạn có thể sử dụng các lát cắt đầy đủ. để chọn tất cả các mặt phẳng, cột hoặc hàng. Tuy nhiên, đối với các chỉ mục theo sau, chỉ cần bỏ qua chỉ mục được tính là một lát cắt đầy đủ. Vì vậy, đối với mảng 2D

import numpy as np

a2 = np.array[[[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]]]
3

Đối với mảng 3D

import numpy as np

a2 = np.array[[[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]]]
4

Lát so với lập chỉ mục

Như chúng ta đã thấy trước đó, bạn có thể sử dụng một chỉ mục để chọn một cột hoặc một mặt phẳng cụ thể. Ở đây chúng tôi chọn hàng 1, cột 2. 4

import numpy as np

a2 = np.array[[[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]]]
5

Bạn cũng có thể sử dụng một lát có độ dài 1 để làm điều gì đó tương tự [lát 1. 2 thay vì chỉ số 1]

import numpy as np

a2 = np.array[[[1, 2, 3],
              [4, 5, 6],
              [7, 8, 9]]]
6

Chú ý sự khác biệt tinh tế. Cái đầu tiên tạo mảng 1D, cái thứ hai tạo mảng 2D chỉ có một hàng

Nếu bạn thấy bài viết này hữu ích, bạn có thể quan tâm đến cuốn sách Công thức NumPy hoặc các cuốn sách khác của cùng tác giả

Có thể cắt thực hiện trong một mảng trong Python không?

Việc cắt trăn có thể được thực hiện theo hai cách. Sử dụng phương thức slice[]. Sử dụng cắt mảng [. . ] phương thức .

Mảng NumPy có thể được cắt lát không?

Bạn có thể cắt một dải các phần tử từ các mảng có nhiều mảng một chiều, chẳng hạn như các phần tử thứ ba, thứ tư và thứ năm, bằng cách chỉ định một dải chỉ mục. [giá trị_bắt đầu, giá trị_kết thúc] . Lưu ý rằng cấu trúc chỉ mục bao gồm giá trị chỉ mục đầu tiên, nhưng không bao gồm giá trị chỉ mục thứ hai.

Làm cách nào để tách một mảng trong Python?

Sử dụng phương thức array_split[] , nhập mảng bạn muốn chia và số lần chia bạn muốn thực hiện.

Bạn có thể cắt mảng?

Phương thức slice[] trả về một bản sao nông của một phần của mảng thành một đối tượng mảng mới được chọn từ đầu đến cuối [không bao gồm kết thúc] trong đó bắt đầu và kết thúc đại diện cho chỉ mục của các mục trong mảng đó. Mảng ban đầu sẽ không bị sửa đổi

Chủ Đề