Подсчитайте общие значения между различными двумерными массивамиPython

Программы на Python
Ответить
Anonymous
 Подсчитайте общие значения между различными двумерными массивами

Сообщение Anonymous »

У меня есть 2 массива 2d, и я хотел бы сравнить оба и посчитать общие значения между ними, например, вот мой код:

Код: Выделить всё

import numpy as np

def f_m_common(V_R, V_A):
r = len(V_A)
c = len(V_R)
M_Common = np.zeros((r, c), dtype = np.uint8)

rows, cols = M_Common.shape

for i in range(rows):
set_1= set(V_A[i])

for j in range(cols):
set_2 = set(V_R[j])
common_elements = set_1.intersection(set_2)
M_Common [i][j] = len(common_elements )

return M_Common

arr1 = np.array([[1, 2, 3, 4, 5, 6], [1, 3, 4, 5, 6, 7], [3, 4, 5, 6, 7, 8]])
arr2 = np.array([[1, 2, 3, 4, 5, 6], [2, 3, 4, 5, 6, 8], [1, 2, 3, 7, 8, 9]])

M_Common_R = f_m_common(arr1 , arr2)

print(M_Common_R)
Как вы понимаете, я сравниваю каждое подмножество двух двухмерных массивов, ожидаемый результат:

Код: Выделить всё

[[6 5 4]
[5 4 5]
[3 3 3]]
Первый элемент явно равен 6, потому что arr1[0] совпадает с arr2[0], а остальные учитывают ту же логику. Неважно, где в локации они находятся. Подобно arr1[2] и arr2[2], у которых есть 3 общих элемента, но не в одной и той же позиции.
Мой вопрос: пока массивы становятся больше в обоих измерениях, вы можете себе представить, что это займет много времени. Так это самый быстрый способ сделать это или есть какой-нибудь другой метод, который вы, ребята, рекомендуете?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -2d-arrays
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»