gpt4 book ai didi

python - 如何使用我的 numpy 数组 (3000,3) 和 (3,2,3000) 进行广播

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:13 26 4
gpt4 key购买 nike

我目前有 2 个数组,形状为 v1=(3000,3) 和 v2=(3,2,3000)。 3000 是时间维度,因此 v1 有 3000 (1,3) 个样本,v2 有 3000 (3,2) 个样本。我希望沿 3000 维进行矩阵乘法和广播,以便获得 3000 (1,2) 个向量作为返回。

我已经尝试 reshape ,使 v1 = (1,3,3000) 和 v2 = (3,2,300) 给出一个错误,指出形状未对齐。

代码:

v1 = np.ones((1,3,3000)) +1
v2 = np.ones((3,2,3000)) - 0.5
np.dot(v1,v2)

最佳答案

v1 的形状为 (3000,3)v2(3,2,3000) , 我们可以使用 np.einsum -

np.einsum('ij,jki->ik',v1,v2)

这为我们提供了形状为 (3000,2) 的输出。

我们可以在 np.einsum 中使用 optimize arg。使用 optimize = True,它在内部利用 BLAS,而使用 optimize = False 则求助于简单的 C 循环。 BLAS 方式也需要一些设置工作。因此,对于经过总和减少的适当长度的轴,我们可能希望将该标志设置为 True,否则设置为 False。在这种情况下,这些轴似乎真的很短,所以我们最好使用默认值:optimize = False 输入。

关于python - 如何使用我的 numpy 数组 (3000,3) 和 (3,2,3000) 进行广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54752562/

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