如何将一个由6个元素组成的数组与一个由12个元素组成的数组以较小的数组重复相乘?

2024-06-24 13:39:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我原以为numpy广播公司会照顾它,但它需要他们是相同的形状。你知道吗


Tags: numpy元素数组x1x2y1x3x4
2条回答

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

如果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.cyclezip和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]

相关问题 更多 >