Чтобы найти равные строки между двумя массивами 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. Выберите тот, который соответствует вашим конкретным потребностям.