#python #arrays #matrix
#python #массивы #матрица
Вопрос:
Учитывая 2 массива (действительно, матрицы) одинаковой формы, каков наилучший способ извлечь логическую маску из их пересечения? То есть True, если элементы в каждой позиции матрицы равны, False, если сравнение элементов завершается неудачей.
Я пытаюсь избежать синтаксической итерации по массивам, и, похоже, должен быть оператор или элегантный способ логического сравнения их, приводящий к маске.
Как только маска сгенерирована, идея состоит в том, чтобы использовать ее для возврата индекса совпадающих позиций.
Элементы являются нечисловыми (строками).
Комментарии:
1. Когда вы говорите «массив», вы действительно имеете в виду вложенные списки? Или вы используете что-то вроде NumPy?
Ответ №1:
Если ваши два массива (назовем их A и B) являются массивами numpy, вы могли бы просто сделать:
Mask = A==B
print("Mask = ",Mask)
Комментарии:
1. Это выглядит многообещающе; с нетерпением жду возможности попробовать.
Ответ №2:
Используйте numpy, где
https://numpy.org/doc/stable/reference/generated/numpy.where.html
image = np.where(matrix2, WhiteImage, matrix1).astype(np.uint8)
Вам нужно создать 3-ю матрицу с одинаковой формой, сделать ее похожей
WhiteImage = np.zeros((height,width,X), np.uint8)
Если ваши массивы не являются numpys, просто преобразуйте их с помощью
matrix1 = np.array(matrix)
Комментарии:
1. Кажется более подробным, чем другой предложенный ответ, но попробую и этот.