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 Show
Đây là một video bao gồm chủ đề này Lập chỉ mục một mảngLậ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ềuChú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ềuChú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ộtNế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à
Đưa ra mảng này [2, 5, 8]
Lập chỉ mục trong 3 chiềuChú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
Đâ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 3DBạ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]) # 30 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]) # 31 Chọn một ma trận trong một mảng 3DNế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]) # 32 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]) # 33 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]) # 34 Cắt một mảngBạ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
Danh sách cắt lát - một bản tóm tắtChỉ 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]) # 35 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]) # 36 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]) # 37 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]) # 38 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 1DCắ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]) # 39 Đ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 2DBạ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 3DBạ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
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ụcNhư 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 |