gpt4 book ai didi

python - 在numpy中将2D数组广播到4D数组

转载 作者:行者123 更新时间:2023-12-02 18:22:11 27 4
gpt4 key购买 nike

我有一个形状为 (48, 7) 的 2D 数组 x,以及一个形状为 (48) 的 4D 数组 T , 7, 48, 7)。当我乘以 x * T 时,python 会广播尺寸,但不是按照我预期的方式(实际上,我不明白它是如何广播的)。以下循环将实现我想要的:

for i in range(48):
for j in range(7):
Tx[i, j, :, :] = x[i, j] * T[i, j, :, :]

其中 Tx 是形状为 (48, 7, 48, 7) 的数组。我的问题是,有没有办法使用广播达到相同的结果?

最佳答案

广播对齐尾随尺寸。换句话说,x * Tx 正在执行以下操作:

for i in range(48):
for j in range(7):
Tx[:, :, i, j] = x[i, j] * T[:, :, i, j]

要使主要尺寸对齐,请将单位尺寸添加到 x:

Tx = x[..., None, None] * T

或者,您可以使用 np.einsum 显式指定维度:

Tx = np.einsum('ij,ij...->ij...', x, T)

关于python - 在numpy中将2D数组广播到4D数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70758062/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com