Python: поиск равных строк в двух массивах NumPy

Чтобы найти равные строки между двумя массивами NumPy в Python, вы можете использовать различные методы. Вот несколько подходов:

Метод 1: использование функций np.equal()и np.all()NumPy

import numpy as np
def find_equal_rows(arr1, arr2):
    equal_rows = np.all(np.equal(arr1[:, None], arr2), axis=2)
    return np.where(equal_rows)[0]
# Example usage
arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2 = np.array([[4, 5, 6], [1, 2, 3], [7, 8, 9]])
equal_rows_indices = find_equal_rows(arr1, arr2)
print(equal_rows_indices)

Метод 2. Использование операторов трансляции и сравнения

import numpy as np
def find_equal_rows(arr1, arr2):
    equal_rows = np.all(arr1[:, None] == arr2, axis=2)
    return np.where(equal_rows)[0]
# Example usage
arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2 = np.array([[4, 5, 6], [1, 2, 3], [7, 8, 9]])
equal_rows_indices = find_equal_rows(arr1, arr2)
print(equal_rows_indices)

Метод 3. Использование операций над множествами

import numpy as np
def find_equal_rows(arr1, arr2):
    arr1_set = set(map(tuple, arr1))
    arr2_set = set(map(tuple, arr2))
    equal_rows = np.array(list(arr1_set.intersection(arr2_set)))
    equal_rows_indices = np.where((arr1[:, None] == equal_rows).all(axis=2))[0]
    return equal_rows_indices
# Example usage
arr1 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
arr2 = np.array([[4, 5, 6], [1, 2, 3], [7, 8, 9]])
equal_rows_indices = find_equal_rows(arr1, arr2)
print(equal_rows_indices)

Эти методы предоставляют различные способы поиска равных строк в двух массивах NumPy. Выберите тот, который соответствует вашим конкретным потребностям.