Python 如何在元素方面将6个元素的数组与12个元素的数组相乘,并重复较小的数组?

Python 如何在元素方面将6个元素的数组与12个元素的数组相乘,并重复较小的数组?,python,pandas,numpy,Python,Pandas,Numpy,我有一个数组[x1,x2,x3,x4,x5,x6]和另一个数组[y1,y2,y3,…y12] 我想将两个数组按元素相乘,得到如下数组: [x1*y1,x2*y2…x1*y7,x2*y8…x6*y12] 我原以为numpy广播公司会处理它,但它需要它们的形状相同。np.resize 如果y的长度不是x长度的倍数,则调整np.resize甚至可以工作。它将继续填充x中的值,在其中循环,直到达到与y匹配的长度 x = np.array([1, 2, 3]) y = np.array([1, 2, 3

我有一个数组[x1,x2,x3,x4,x5,x6]和另一个数组[y1,y2,y3,…y12]

我想将两个数组按元素相乘,得到如下数组: [x1*y1,x2*y2…x1*y7,x2*y8…x6*y12]

我原以为numpy广播公司会处理它,但它需要它们的形状相同。

np.resize

如果
y
的长度不是
x
长度的倍数,则调整
np.resize
甚至可以工作。它将继续填充
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])

试试
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]

np.tile(arr1,2)*np.array(array2)
?同样,如果我有(x,y)和(d1,d2,d3)并且我希望它的顺序是(xd1,xd2,xd3,yd1,yd2,yd3),那么现在这是广播的情况:
(arr1[,None]*arrr2).ravel()
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]