gpt4 book ai didi

python - 如何在 numpy 中进行 3 向外积?

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

关于 numpy.outer [link] .

给定两个向量,a = [a0, a1, ..., aM]b = [b0, b1, ..., bN],外积将是 M*N 矩阵。

  1. 但是如何实现 3 数组外积,这意味着:给定第三个向量c = [c0, c1, ..., cP],如何得到外积在 3 个 numpy 数组之间。

  2. 以及如何在numpy中获取n-array的n路外积,对于einsum的方法,如何改变'i,j,k->ijk ' 来处理 "n"

最佳答案

充分利用广播的直接方法是:

a[:,None,None] * b[None,:,None] * c[None,None,:]

np.ix_ 以适度的速度成本为您进行 reshape

In [919]: np.ix_(a,b,c)
Out[919]:
(array([[[0]],

[[1]],

[[2]],

[[3]],

[[4]]]), array([[[10],
[11],
[12],
[13]]]), array([[[20, 21, 22]]]))

结果数组可以乘以

np.prod(np.ix_(a,b,c))

einsum 版本简单、快速

np.einsum('i,j,k',a,b,c)

学习所有 3 种方法是个好主意。

嵌套 outer 的问题在于期望输入为 1d,或者将它们展平。可以使用,但需要一些改造

np.outer(a,np.outer(b,c)).reshape(a.shape[0],b.shape[0],c.shape[0])

关于python - 如何在 numpy 中进行 3 向外积?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43148829/

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