gpt4 book ai didi

python - 2D 和 3D 数组之间的点积

转载 作者:太空宇宙 更新时间:2023-11-03 16:09:03 24 4
gpt4 key购买 nike

假设我有两个数组 VQ,其中 V(i, j, j)Q(j, j)。我现在希望计算 QV 的每一“行”的点积,并将结果保存为 (i, j, j) 大小的矩阵。使用 for 循环可以轻松完成此操作,只需迭代 i 就像

import numpy as np

v = np.random.normal(size=(100, 5, 5))
q = np.random.normal(size=(5, 5))
output = np.zeros_like(v)

for i in range(v.shape[0]):
output[i] = q.dot(v[i])

但是,这对于我的需求来说太慢了,我猜测有一种方法可以使用 einsumtensordot 来矢量化此操作,但我还没有没能弄清楚。有人可以指出我正确的方向吗?谢谢

最佳答案

您当然可以使用np.tensordot ,但之后需要交换轴,就像这样 -

out = np.tensordot(v,q,axes=(1,1)).swapaxes(1,2)

np.einsum ,这更直接一点,就像这样 -

out = np.einsum('ijk,lj->ilk',v,q)

关于python - 2D 和 3D 数组之间的点积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39453770/

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