【发布时间】:2022-01-04 05:13:56
【问题描述】:
假设 X 是一个形状为 (3,8,8) 的 ndarray,而 y 是另一个形状为 (3,) 的数组。我想将 X 的每个 (8,8) 切片乘以 y 的一个元素,然后将结果相加。使用 for 循环,可以按如下方式完成:
import numpy as np
X = np.random.rand(3,8,8)
y = np.random.rand(3)
temp = 0
for k in range(3):
temp = temp+y[k]*X[k,:,:]
有什么办法可以避免“for”循环吗?任何线索表示赞赏。
【问题讨论】:
-
While True使用转义条件迭代? -
@Skully 我实际上想要一个带有任何循环的矢量化版本。
-
@KellyBundy 请考虑 X 和 y 是随机的。
-
@KellyBundy 我已经编辑了代码。这现在有意义吗?
-
(y[:,None,None]*X).sum(0)可以解决问题
标签: python numpy for-loop vectorization numpy-ndarray