Как поэлементно умножить массив из 6 элементов на массив из 12 элементов с повторением меньшего массива? - PullRequest
3 голосов
/ 02 июля 2019

У меня есть массив [x1, x2, x3, x4, x5, x6] и другой массив [y1, y2, y3, ... y12].

Я хочу поэлементно умножить два массива, чтобы получить массив, подобный следующему: [x1 * y1, x2 * y2 .... x1 * y7, x2 * y8 ... x6 * y12]

Я думал, что ошалевшее вещание позаботится об этом, но нужно, чтобы они были одинаковой формы.

Ответы [ 2 ]

2 голосов
/ 02 июля 2019

np.resize

x = np.array([1, 2, 3])
y = np.array([1, 2, 3, 4, 5, 6])

np.resize(x, y.size) * y

array([ 1,  4,  9,  4, 10, 18])

np.resize будет работать даже, если длина y не кратна длине x.Он будет заполнять значения от x, циклически перебирая их, пока не будет достигнута длина, соответствующая y.

x = np.array([1, 2, 3])
y = np.array([1, 2, 3, 4, 5, 6, 7, 8])

np.resize(x, y.size) * y

array([ 1,  4,  9,  4, 10, 18,  7, 16])
0 голосов
/ 02 июля 2019

Попробуйте itertools.cycle, zip и listcomp

from itertools import cycle

x = np.arange(1,6)
y = np.arange(1,12)

list(zip(cycle(x), y))

Out[1758]:
[(1, 1),
 (2, 2),
 (3, 3),
 (4, 4),
 (5, 5),
 (1, 6),
 (2, 7),
 (3, 8),
 (4, 9),
 (5, 10),
 (1, 11)]


[i*j for i, j in zip(cycle(x), y)]

Out[1759]: [1, 4, 9, 16, 25, 6, 14, 24, 36, 50, 11]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...