Умножение строки в массиве NumPy на определенные значения, основанные на другой строке - PullRequest
0 голосов
/ 31 октября 2018

У меня есть следующий список:

ls = [[1,2,3], [3,4] , [5] , [7,8], [23], [90, 81]]

Это мой массив:

array([[    1,     0,     4,     3],
       [   10,   100,  1000, 10000]])

Мне нужно умножить значения во второй строке моего массива на длину списка в ls, которая находится в индексе соответствующего числа в первом ряд:

10 * len(ls[1]) & 100 * len(ls[0]) и т. Д.

Целевым выводом будет этот массив:

array([[    1,     0,     4,     3],
       [   20,   300,  1000, 20000]])

Есть ли эффективный способ сделать это?

1 Ответ

0 голосов
/ 31 октября 2018

Используйте list comprehesion, чтобы найти длины и умножить их на 2-ю строку массива как:

ls = [[1,2,3], [3,4] , [5] , [7,8]]
arr = np.array([[    1,     0,     2,     3],
                [   10,   100,  1000, 10000]])

arr[1,:] = arr[1,:]*([len(l) for l in ls])

arr
array([[    1,     0,     2,     3],
       [   30,   200,  1000, 20000]])

РЕДАКТИРОВАТЬ:

arr[1,:] = arr[1,:]*([len(ls[l]) for l in arr[0,:]])

arr
array([[    1,     0,     2,     3],
       [   20,   300,  1000, 20000]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...