Hướng dẫn how do you check if an array contains a value from another array python? - làm thế nào để bạn kiểm tra xem một mảng có chứa một giá trị từ một python mảng khác hay không?

Sử dụng gấu trúc, bạn có thể sử dụng

>>> np.any(np.in1d(a1, a2))
True
6:

a1 = np.array([10,5,4,13,10,1,1,22,7,3,15,9])
a2 = np.array([3,4,9,10,13,15,16,18,19,20,21,22,23])

>>> pd.Series(a1).isin(a2).any()
True

Và sử dụng chức năng Numpy In1D (theo bình luận từ @norman):

>>> np.any(np.in1d(a1, a2))
True

Đối với các mảng nhỏ như trong ví dụ này, giải pháp sử dụng Set là người chiến thắng rõ ràng. Đối với các mảng lớn hơn, không giống nhau (tức là không có sự chồng chéo), các giải pháp gấu trúc và numpy nhanh hơn. Tuy nhiên,

>>> np.any(np.in1d(a1, a2))
True
7 dường như xuất sắc cho các mảng lớn hơn.

Mảng nhỏ (12-13 yếu tố)

%timeit set(array1) & set(array2)
The slowest run took 4.22 times longer than the fastest. This could mean that an intermediate result is being cached 
1000000 loops, best of 3: 1.69 µs per loop

%timeit any(i in a1 for i in a2)
The slowest run took 12.29 times longer than the fastest. This could mean that an intermediate result is being cached 
100000 loops, best of 3: 1.88 µs per loop

%timeit np.intersect1d(a1, a2)
The slowest run took 10.29 times longer than the fastest. This could mean that an intermediate result is being cached 
100000 loops, best of 3: 15.6 µs per loop

%timeit np.any(np.in1d(a1, a2))
10000 loops, best of 3: 27.1 µs per loop

%timeit pd.Series(a1).isin(a2).any()
10000 loops, best of 3: 135 µs per loop

Sử dụng một mảng có các phần tử 100K (không chồng chéo)::

a3 = np.random.randint(0, 100000, 100000)
a4 = a3 + 100000

%timeit np.intersect1d(a3, a4)
100 loops, best of 3: 13.8 ms per loop    

%timeit pd.Series(a3).isin(a4).any()
100 loops, best of 3: 18.3 ms per loop

%timeit np.any(np.in1d(a3, a4))
100 loops, best of 3: 18.4 ms per loop

%timeit set(a3) & set(a4)
10 loops, best of 3: 23.6 ms per loop

%timeit any(i in a3 for i in a4)
1 loops, best of 3: 34.5 s per loop

Đọc 3 phút

Trong bài viết này, chúng ta sẽ thấy các chức năng tiện lợi có thể được sử dụng để kiểm tra xem các phần tử của mảng 1D có tồn tại trong một mảng 2D khác hay không

Chúng tôi sẽ chỉ làm theo các bước này để kiểm tra các yếu tố đó thuộc về một mảng khác:

  1. Tạo mảng 1D (x) và mảng 2D (y)
  2. Sử dụng numpy.isin () để trả về một mảng boolean có hình dạng giống như y đúng trong đó một phần tử của y ở x và sai nếu không
  3. Sử dụng numpy.in1d ​​() để kiểm tra xem mỗi phần tử của mảng 1-d cũng có mặt trong một mảng thứ hai y
  4. Chỉ số của y nơi các phần tử khớp với mảng 1D x

Bắt đầu nào

Tạo mảng 1D x và 2D y

Hãy để tạo ra một mảng 1D X bằng cách sử dụng ngẫu nhiên numpy để tạo các số nguyên ngẫu nhiên có kích thước 4 và tạo một mảng 2D thứ hai với các số nguyên ngẫu nhiên có hình dạng 4x4

x = np.random.randint(0, 9, size=(4))
x

y=np.random.randint(0, 9, size=(4, 4))
y

Out: 
array([[5, 8, 7, 8],
       [3, 2, 2, 3],
       [6, 0, 3, 7],
       [8, 6, 0, 3]])              

Chúng tôi sẽ kiểm tra xem các phần tử trong x thuộc về mảng y hay không

Sử dụng numpy.isin () để tìm các phần tử trong mảng 1D x tồn tại trong mảng 2d y

numpy.isin () là phiên bản hàm yếu tố của từ khóa Python trong. Nó tính toán phần tử trong Array X, chỉ phát trên mảng 2D y. Trả về một mảng boolean có hình dạng giống như mảng 2D y đúng trong đó một phần tử của phần tử trong mảng 1D

Trong mảng boolean đầu ra, bạn có thể thấy tất cả các vị trí mà các phần tử từ mảng 1D tồn tại được đặt là đúng và sai nếu không

Out: 
array([[False, False,  True, False],
       [False,  True,  True, False],
       [ True, False, False,  True],
       [False,  True, False, False]])            

Bạn cũng có thể đảo ngược thử nghiệm bằng cách đặt tham số đảo ngược thành true

np.isin(Y, X, invert=True)

Out: 
array([[ True,  True, False,  True],
       [ True, False, False,  True],
       [False,  True,  True, False],
       [ True, False,  True,  True]])            

Chúng ta cũng có thể kiểm tra tất cả các phần tử trong mảng 2D y thuộc về mảng 1D X bằng cách chỉ thay đổi vị trí của x và y trong hàm isin (). Trong trường hợp này, một mảng 1D của hình x được trả về

>>> np.any(np.in1d(a1, a2))
True
0

Sử dụng numpy.in1d ​​() để tìm các phần tử trong mảng 1D x tồn tại trong mảng 2d y

numpy.in1d ​​() kiểm tra xem mỗi phần tử của mảng 1-D cũng có mặt trong một mảng thứ hai.

Trả về một mảng boolean cùng độ dài với x là đúng trong đó một phần tử của x trong y và sai.

Tài liệu chính thức Numpy khuyến nghị sử dụng isin () trên in1d ()

>>> np.any(np.in1d(a1, a2))
True
0

Tìm chỉ số các phần tử của mảng 1D x trong mảng 2D y

Chúng tôi đã thấy tất cả các chức năng cung cấp cho chúng tôi một mảng boolean để kiểm tra xem phần tử của một mảng có tồn tại trong một mảng khác hay không.

Tiếp theo là gì? Làm thế nào bạn có thể tìm thấy các chỉ số của tất cả các yếu tố đó trong mảng 1D trong mảng 2D

Bạn có thể sử dụng numpy.where () cùng với numpy.isin () như được hiển thị bên dưới

>>> np.any(np.in1d(a1, a2))
True
2

Hoặc, vượt qua đầu ra boolean của numpy.isin () trong numpy.nonzero () để trả về chỉ số của các phần tử trong mảng 2D y phù hợp với phần tử trong mảng 1D x

>>> np.any(np.in1d(a1, a2))
True
3

Out: 
array([[False, False,  True, False],
       [False,  True,  True, False],
       [ True, False, False,  True],
       [False,  True, False, False]])            

Nhận chỉ mục trong đó các phần tử là đúng trong mặt nạ ở trên

>>> np.any(np.in1d(a1, a2))
True
5

Conclusion:

Dưới đây là bản tóm tắt ngắn gọn về những gì chúng ta đã học được trong bài viết này:

  • Sử dụng numpy.isin () để tìm các phần tử của một mảng thuộc về một mảng khác hay không. Nó trả về một mảng boolean phù hợp với hình dạng của mảng khác, nơi các phần tử sẽ được tìm kiếm
  • numpy.isin () cũng đảo ngược kết quả bằng cách sử dụng tham số đảo ngược và thiết lập nó là đúng
  • Đối với mảng thử nghiệm 1D, chúng tôi cũng có thể sử dụng in1d () để kiểm tra xem các phần tử của mảng 1D thuộc về một mảng khác
  • Sử dụng numpy.where () và numpy.isin () để lấy chỉ số của tất cả các phần tử phù hợp trong mảng khác
  • Ngoài ra, chúng ta cũng có thể sử dụng đầu ra boolean của numpy.isin () trong numpy.nonzero () để tìm chỉ số của tất cả các yếu tố phù hợp

Làm thế nào để bạn kiểm tra xem một phần tử trong một mảng ở trong một mảng python khác?

Sử dụng numpy.isin () để tìm các phần tử của một mảng thuộc về một mảng khác hay không. Nó trả về một mảng boolean phù hợp với hình dạng của mảng khác nơi các yếu tố sẽ được tìm kiếm. isin() to find the elements of a array belongs to another array or not. it returns a boolean array matching the shape of other array where elements are to be searched.

Làm thế nào để bạn kiểm tra xem một phần tử của một mảng ở trong một mảng khác?

Sử dụng hàm ES6 sẵn có một số () để lặp qua từng phần tử của mảng đầu tiên và để kiểm tra mảng.Sử dụng hàm sẵn bao gồm () với mảng thứ hai để kiểm tra xem phần tử có tồn tại trong mảng thứ nhất hay không.Nếu phần tử tồn tại thì trả về true khác trả về sai.Use the inbuilt function includes() with second array to check if element exist in the first array or not. If element exist then return true else return false.

Làm cách nào để tìm một phần tử trong một mảng python?

Python có một phương thức để tìm kiếm một phần tử trong một mảng, được gọi là index ().Nếu bạn sẽ chạy x.chỉ mục ('p') bạn sẽ nhận được bằng không làm đầu ra (chỉ mục đầu tiên).index(). If you would run x. index('p') you would get zero as output (first index).

Làm thế nào để bạn kiểm tra xem một giá trị có mặt trong danh sách Python không?

Chúng ta có thể sử dụng phương thức danh sách Python được xây dựng, Count (), để kiểm tra xem phần tử được truyền có tồn tại trong danh sách không.Nếu phần tử được truyền tồn tại trong danh sách, phương thức đếm () sẽ hiển thị số lần nó xảy ra trong toàn bộ danh sách.Nếu đó là một số dương khác không, nó có nghĩa là một yếu tố tồn tại trong danh sách.use the in-built python List method, count(), to check if the passed element exists in the List. If the passed element exists in the List, the count() method will show the number of times it occurs in the entire list. If it is a non-zero positive number, it means an element exists in the List.