Hướng dẫn index of 2d array python - chỉ mục của python mảng 2d

Tôi cần tìm ra làm thế nào tôi có thể tìm thấy tất cả các chỉ mục của một giá trị trong một mảng 2D.

Ví dụ: tôi có mảng 2D sau:

[[[1 1 0 0],
  [0 0 1 1],
  [0 0 0 0]]]

Tôi cần tìm chỉ số của tất cả các 1 và 0.

1: [[0, 0], [0, 1], [1, 2], [1, 3]]
0: [[0, 2], [0, 3], [1, 0], [1, 1], [the entire all row]]

Tôi đã thử điều này nhưng nó không cung cấp cho tôi tất cả các chỉ mục:

t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]

Về cơ bản, nó chỉ cung cấp cho tôi một trong các chỉ mục trong mỗi hàng

from array import *

T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]

print[T[0]]

print[T[1][2]]
8.

Mảng hai chiều là một mảng trong một mảng. Nó là một mảng các mảng. Trong loại mảng này, vị trí của một phần tử dữ liệu được giới thiệu bởi hai chỉ số thay vì một. Vì vậy, nó đại diện cho một bảng với các hàng một dcolumns dữ liệu.

Trong ví dụ dưới đây của một mảng hai chiều, người quan sát rằng mỗi phần tử mảng cũng là một mảng.

Hãy xem xét ví dụ về nhiệt độ ghi 4 lần một ngày, mỗi ngày. Đôi khi công cụ ghi âm có thể bị lỗi và chúng tôi không ghi dữ liệu. Dữ liệu như vậy trong 4 ngày có thể được trình bày dưới dạng mảng hai chiều như dưới đây.

Day 1 - 11 12 5 2 
Day 2 - 15 6 10 
Day 3 - 10 8 12 5 
Day 4 - 12 15 8 6 

Dữ liệu trên có thể được biểu diễn dưới dạng mảng hai chiều như dưới đây.

T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]

Truy cập các giá trị

Các yếu tố dữ liệu trong hai mảng dimesnional có thể được truy cập bằng hai chỉ số. Một chỉ mục đề cập đến mảng chính hoặc cha mẹ và một chỉ mục khác đề cập đến vị trí của phần tử dữ liệu trong mảng bên trong. Nếu chúng tôi chỉ đề cập đến một chỉ mục thì toàn bộ mảng bên trong được in cho vị trí chỉ mục đó.

Thí dụ

Ví dụ dưới đây minh họa cách nó hoạt động.

from array import *

T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]

print[T[0]]

print[T[1][2]]

Đầu ra

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

[11, 12, 5, 2]
10

Để in ra toàn bộ mảng hai chiều, chúng ta có thể sử dụng Python cho vòng lặp như hình dưới đây. Chúng tôi sử dụng cuối dòng để in ra các giá trị trong các hàng khác nhau.

Thí dụ

from array import *

T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]
for r in T:
   for c in r:
      print[c,end = " "]
   print[]

Đầu ra

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

11 12  5 2 
15  6 10 
10  8 12 5 
12 15  8 6 

Để in ra toàn bộ mảng hai chiều, chúng ta có thể sử dụng Python cho vòng lặp như hình dưới đây. Chúng tôi sử dụng cuối dòng để in ra các giá trị trong các hàng khác nhau.

Chúng ta có thể chèn các phần tử dữ liệu mới ở vị trí cụ thể bằng cách sử dụng phương thức chèn [] và chỉ định chỉ mục.

Thí dụ

Trong ví dụ dưới đây, một phần tử dữ liệu mới được chèn tại vị trí chỉ mục 2.

from array import *
T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]

T.insert[2, [0,5,11,13,6]]

for r in T:
   for c in r:
      print[c,end = " "]
   print[]

Đầu ra

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

1: [[0, 0], [0, 1], [1, 2], [1, 3]]
0: [[0, 2], [0, 3], [1, 0], [1, 1], [the entire all row]]
0

Cập nhật giá trị

Chúng ta có thể cập nhật toàn bộ mảng bên trong hoặc một số phần tử dữ liệu cụ thể của mảng bên trong bằng cách chỉ định lại các giá trị bằng chỉ mục mảng.

Thí dụ

1: [[0, 0], [0, 1], [1, 2], [1, 3]]
0: [[0, 2], [0, 3], [1, 0], [1, 1], [the entire all row]]
1

Đầu ra

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

1: [[0, 0], [0, 1], [1, 2], [1, 3]]
0: [[0, 2], [0, 3], [1, 0], [1, 1], [the entire all row]]
2

Cập nhật giá trị

Chúng ta có thể cập nhật toàn bộ mảng bên trong hoặc một số phần tử dữ liệu cụ thể của mảng bên trong bằng cách chỉ định lại các giá trị bằng chỉ mục mảng.

Thí dụ

1: [[0, 0], [0, 1], [1, 2], [1, 3]]
0: [[0, 2], [0, 3], [1, 0], [1, 1], [the entire all row]]
3

Đầu ra

Khi mã trên được thực thi, nó sẽ tạo ra kết quả sau -

1: [[0, 0], [0, 1], [1, 2], [1, 3]]
0: [[0, 2], [0, 3], [1, 0], [1, 1], [the entire all row]]
4

from array import *

T = [[11, 12, 5, 2], [15, 6,10], [10, 8, 12, 5], [12,15,8,6]]

print[T[0]]

print[T[1][2]]
9 có thể được lập chỉ mục bằng cú pháp Python
[11, 12, 5, 2]
10
0 tiêu chuẩn, trong đó X là mảng và obj lựa chọn. Có nhiều loại lập chỉ mục khác nhau có sẵn tùy thuộc vào OBJ: lập chỉ mục cơ bản, lập chỉ mục nâng cao và truy cập hiện trường.

Hầu hết các ví dụ sau đây cho thấy việc sử dụng lập chỉ mục khi tham chiếu dữ liệu trong một mảng. Các ví dụ cũng hoạt động tốt khi gán cho một mảng. Xem gán giá trị cho các mảng được lập chỉ mục cho các ví dụ và giải thích cụ thể về cách thức hoạt động của bài tập.Assigning values to indexed arrays for specific examples and explanations on how assignments work.

Lưu ý rằng trong Python,

[11, 12, 5, 2]
10
1 tương đương với
[11, 12, 5, 2]
10
2; Cái sau chỉ là đường cú pháp cho cái trước.

Lập chỉ mục cơ bản#

Lập chỉ mục phần tử đơn#

Lập chỉ mục phần tử duy nhất hoạt động chính xác như thế đối với các chuỗi Python tiêu chuẩn khác. Đó là dựa trên 0 và chấp nhận các chỉ số tiêu cực để lập chỉ mục từ cuối mảng.

1: [[0, 0], [0, 1], [1, 2], [1, 3]]
0: [[0, 2], [0, 3], [1, 0], [1, 1], [the entire all row]]
5

Không cần thiết phải tách từng chỉ số kích thước trên các dấu ngoặc vuông của riêng mình.

1: [[0, 0], [0, 1], [1, 2], [1, 3]]
0: [[0, 2], [0, 3], [1, 0], [1, 1], [the entire all row]]
6

Lưu ý rằng nếu một người lập chỉ mục một mảng đa chiều với ít chỉ số hơn kích thước, người ta sẽ nhận được một mảng hai chiều. Ví dụ:

1: [[0, 0], [0, 1], [1, 2], [1, 3]]
0: [[0, 2], [0, 3], [1, 0], [1, 1], [the entire all row]]
7

Nghĩa là, mỗi chỉ mục được chỉ định chọn mảng tương ứng với phần còn lại của các kích thước được chọn. Trong ví dụ trên, việc chọn 0 có nghĩa là kích thước còn lại của chiều dài 5 không được xác định và những gì được trả về là một mảng có kích thước và kích thước đó. Cần lưu ý rằng mảng được trả về là một chế độ xem, tức là, nó không phải là bản sao của bản gốc, mà chỉ vào cùng các giá trị trong bộ nhớ cũng như mảng gốc. Trong trường hợp này, mảng 1-D ở vị trí đầu tiên [0] được trả về. Vì vậy, sử dụng một chỉ mục duy nhất trên mảng được trả về, kết quả là một phần tử được trả về. Đó là:view, i.e., it is not a copy of the original, but points to the same values in memory as does the original array. In this case, the 1-D array at the first position [0] is returned. So using a single index on the returned array, results in a single element being returned. That is:

Vì vậy, lưu ý rằng

[11, 12, 5, 2]
10
3 mặc dù trường hợp thứ hai không hiệu quả hơn khi một mảng tạm thời mới được tạo sau chỉ số đầu tiên sau đó được lập chỉ mục bởi 2.

Ghi chú

Numpy sử dụng lập chỉ mục thứ tự C. Điều đó có nghĩa là chỉ số cuối cùng thường đại diện cho vị trí bộ nhớ thay đổi nhanh nhất, không giống như Fortran hoặc IDL, trong đó chỉ số đầu tiên thể hiện vị trí thay đổi nhanh nhất trong bộ nhớ. Sự khác biệt này đại diện cho một tiềm năng lớn cho sự nhầm lẫn.

Cắt và sải#

Việc cắt cơ bản mở rộng khái niệm cơ bản của Python về việc cắt thành kích thước N. Việc cắt cơ bản xảy ra khi OBJ là đối tượng

[11, 12, 5, 2]
10
4 [được xây dựng bởi ký hiệu
[11, 12, 5, 2]
10
5 bên trong dấu ngoặc], một số nguyên hoặc một bộ đồ của các đối tượng và số nguyên. Các đối tượng
[11, 12, 5, 2]
10
6 và
[11, 12, 5, 2]
10
7 cũng có thể được xen kẽ với những đối tượng này.

Trường hợp đơn giản nhất của việc lập chỉ mục với N số nguyên trả về một vô hướng mảng đại diện cho mục tương ứng. Như trong Python, tất cả các chỉ số đều dựa trên 0: Đối với chỉ mục thứ i \ [n_i \], phạm vi hợp lệ là \ [0 \ le n_i

Bài Viết Liên Quan

Chủ Đề