Hướng dẫn find index of element in 2d array python - tìm chỉ mục của phần tử trong 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

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

Trong hướng dẫn này, chúng tôi sẽ xem xét cách tìm chỉ số của một phần tử trong một mảng numpy.

Bạn có thể sử dụng hàm Numpy WHERe WHERE [] để lấy chỉ mục của một phần tử bên trong mảng. Ví dụ sau đây minh họa việc sử dụng.

np.where[arr==i]

Ở đây,

t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
1 là mảng numpy và
t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
2 là yếu tố mà bạn muốn có được chỉ mục. Bên trong hàm, chúng tôi vượt qua ARR == I, một hoạt động vector hóa trên mảng mảng để so sánh từng phần tử của nó với giá trị trong I và dẫn đến một mảng vô âm của các giá trị boolean
t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
3 và
t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
4.

Bây giờ,

t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
5 cung cấp cho bạn tất cả các chỉ số nơi phần tử xảy ra trong mảng. Đó là các chỉ số của tất cả các yếu tố mà ARR == tôi đánh giá là đúng. Phương pháp này hoạt động cho cả mảng một chiều và đa chiều. Xem các ví dụ dưới đây:

1. INDEX của phần tử trong mảng 1D

Hãy để áp dụng cú pháp trên trên một mảng numpy một chiều và tìm thấy tất cả các chỉ số nơi xảy ra một phần tử cụ thể. Đầu tiên, hãy để tạo ra một mảng 1D và in nó ra.

import numpy as np

# create a numpy array
arr = np.array[[7, 5, 8, 6, 3, 9, 5, 2, 3, 5]]
# print the original array
print["Original array:", arr]

Output:

Original array: [7 5 8 6 3 9 5 2 3 5]

Bây giờ chúng ta có một mảng Numpy 1D, hãy để tìm các chỉ mục trong đó phần tử

t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
6 xảy ra bên trong mảng:

# find index of 5
result = np.where[arr==5]
# print the result
print["Index of 5:", result]

Output:

Index of 5: [array[[1, 6, 9], dtype=int64],]

Chúng tôi nhận được một mảng numpy như một đầu ra. Lưu ý rằng tuple này chỉ có một mảng numpy lưu trữ các chỉ số xuất hiện của phần tử

t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
6 bên trong mảng.

Nếu bạn đã sử dụng hàm

t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
5 trên một mảng numpy đa chiều, bộ tple được trả về sẽ có nhiều mảng numpy, một cho mỗi trục.

Điều gì sẽ xảy ra nếu phần tử không có trong mảng?

Nếu phần tử không có trong mảng, chúng ta sẽ nhận được một mảng trống với

t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
5. Ví dụ, hãy để sử dụng nó để tìm chỉ số của
np.where[arr==i]
0, một yếu tố không có trong mảng trên
t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
1.

# index of 1
print[np.where[arr==1]]

Output:

[array[[], dtype=int64],]

Bạn có thể thấy rằng tuple trả về chứa một mảng numpy trống rỗng.

Chỉ mục của sự xuất hiện đầu tiên của phần tử

t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
5 trả về tất cả các chỉ mục của sự xuất hiện của một phần tử. Bạn có thể sử dụng nó để tìm chỉ số của lần xuất hiện đầu tiên. Ví dụ, hãy để Lừa tìm chỉ số của lần xuất hiện đầu tiên của
t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
6 trong mảng trên.

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

Output:

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

Từ các ví dụ trước, chúng tôi biết rằng 5 có mặt tại các chỉ mục 1, 6 và 9 trong mảng mảng. Ở đây chúng tôi nhận được sự xuất hiện đầu tiên của nó là tại INDEX 1.

2. INDEX của phần tử trong mảng 2D

Chúng ta cũng có thể sử dụng hàm

t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
5 để tìm vị trí/chỉ số xuất hiện của các phần tử trong một mảng hai chiều hoặc đa chiều. Đối với một mảng 2D, tuple được trả về sẽ chứa hai mảng numpy một cho các hàng và cái còn lại cho các cột.

Đầu tiên, hãy để tạo ra một mảng numpy hai chiều.

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

Output:

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

Ở đây chúng tôi đã tạo ra một mảng 2D Numpy với ba hàng và ba cột. Hãy để tìm các chỉ mục trong đó 17 xảy ra bên trong mảng này.

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

Output:

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

Bộ phận được trả lại từ

t = [[index, row.index[1]] for index, row in enumerate[x] if 1 in row]
5 chứa hai mảng numpy. Các giá trị mảng thứ nhất cho biết các chỉ mục hàng trong khi các giá trị mảng thứ hai cho biết các chỉ mục cột của các lần xuất hiện của phần tử bên trong mảng 2D.

Hãy để Lừa làm cho các chỉ mục này dễ đọc hơn bằng cách hiển thị các bộ dữ liệu chỉ mục [hàng, cột] cho mỗi lần xuất hiện.

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

Output:

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

Kết quả cho thấy 17 xảy ra tại các vị trí sau - hàng 0 cột 1, hàng 1 cột 2 và hàng 2 Cột 0 với chỉ mục cho các hàng và cột bắt đầu từ 0.

Điều gì sẽ xảy ra nếu phần tử không có trong mảng?

Nếu phần tử không có trong mảng 2D. Bộ tuple được trả lại từ np.where [] sẽ có hai mảng numpy trống. Ví dụ: nếu chúng ta kiểm tra chỉ số của 13, một phần tử không có trong mảng 2D ở trên -

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

Output:

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

Chúng tôi nhận được một bộ ba mảng numpy trống rỗng.

Để biết thêm về Numpy nơi chức năng, hãy tham khảo tài liệu của nó.

Với điều này, chúng tôi đi đến cuối hướng dẫn này. Các ví dụ và kết quả mã được trình bày trong hướng dẫn này đã được triển khai trong A & nbsp; Jupyter Notebook & NBSP; với hạt nhân Python [phiên bản 3.8.3] có phiên bản Numpy 1.18.5


Đăng ký nhận bản tin của chúng tôi để biết thêm hướng dẫn và hướng dẫn thông tin. Chúng tôi không spam và bạn có thể từ chối bất cứ lúc nào.
We do not spam and you can opt out any time.

Hướng dẫn về mảng Numpy -

  • Làm thế nào để sắp xếp một mảng numpy?
  • Tạo gấu trúc DataFrame từ một mảng numpy
  • Những cách khác nhau để tạo ra các mảng numpy
  • Chuyển đổi mảng numpy thành một danh sách - với các ví dụ
  • Nối các giá trị vào một mảng numpy
  • Tìm chỉ số phần tử trong mảng numpy
  • Đọc tệp csv dưới dạng mảng numpy
  • Lọc một mảng numpy - với các ví dụ
  • Python - chọn ngẫu nhiên giá trị từ danh sách
  • Numpy - tổng các giá trị trong mảng
  • Numpy - tổng phần tử của hai mảng
  • Numpy - Sự nhân phần của hai mảng
  • Sử dụng phương thức Numpy Linspace []
  • Sử dụng Numpy Vstack [] để xếp các mảng theo chiều dọc
  • Không gian logspace [] - sử dụng và ví dụ
  • Sử dụng phương thức arange [] numpy
  • Sử dụng numpy hstack [] vào các mảng ngăn xếp theo chiều ngang
  • Trim Zeros từ một mảng numpy trong Python
  • Nhận các giá trị duy nhất và tính trong một mảng numpy
  • Mảng numpy phân chia theo chiều ngang với hsplit []

  • Piyush là một nhà khoa học dữ liệu đam mê sử dụng dữ liệu để hiểu mọi thứ tốt hơn và đưa ra quyết định sáng suốt. Trong quá khứ, anh ta làm việc như một nhà khoa học dữ liệu cho ZS và có bằng kỹ sư từ IIT Roorkee. Sở thích của anh ấy bao gồm xem cricket, đọc sách và làm việc trên các dự án phụ.

    Xem tất cả các bài viết

Bài Viết Liên Quan

Chủ Đề