Создание нового списка из 2-х существующих списков, где их значения совпадают - PullRequest
0 голосов
/ 06 июля 2018

Я хотел бы сделать это на скриншоте.Не могли бы вы помочь мне в этом?

Код:

import numpy as np

op = np.array([[46, 29],
               [39, 47],
               [25, 47],
               [31, 24]])
rt = np.array([[1, 1, 1, 0],  # op[0][1]+op[1][1]+op[2][1]+op[3][0]= 29 + 47 + 47 + 31 = 154
               [1, 0, 1, 1],
               [1, 0, 1, 0],
               [0, 1, 0, 1],
               [1, 1, 0, 0],
               [0, 1, 1, 1],
               [0, 1, 0, 1],
               [1, 1, 1, 0],
               [0, 1, 1, 0],
               [1, 0, 1, 0]])

enter image description here

Ответы [ 2 ]

0 голосов
/ 06 июля 2018

Это чистое решение Python. Может быть более производительное решение NumPy. Здесь мы перебираем, rt и заархивируем туда подмассивы с op. Затем мы используем значения rt подмассивов в качестве индексов в op подмассивах и суммируем значения, которые мы ищем.

[sum(o[r] for o, r in zip(op, x)) for x in rt]
# [154, 139, 146, 142, 132, 164, 142, 154, 171, 146]
0 голосов
/ 06 июля 2018

То, что вы делаете, очень похоже на умножение матриц. У Numpy есть операция matmul, которая сделает то, что вы хотите для вас.

np.matmul(rt, op)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...