gpt4 book ai didi

python - python - numpy 按行点积列

转载 作者:行者123 更新时间:2023-12-01 08:24:09 26 4
gpt4 key购买 nike

我试图在 nx3 向量中取出每一行与其自身的点积。让我更好地解释一下:我需要的是从 nx3 到 nx3x3 数组。

如果我有以下内容:

A = np.array([[1, 2, 2],
[4, 2, 3])

我想得到它会是什么:

第一个元素:

np.dot(A[0].reshape(3,1), A[0].reshape(1,3)) = array([[1, 2, 2], [2, 4, 4], [2, 4, 4]])

第二个元素:

np.dot(A[1].reshape(3,1), A[1].reshape(1,3)) = array([[16, 8, 12], [8, 4, 6], [12, 6, 9]])

所以我的最终数组是:

result = array([[[ 1, 2,  2], 
[ 2, 4, 4],
[ 2, 4, 4]],
[[16, 8, 12],
[ 8, 4, 6],
[12, 6, 9]])

result.shape = (2, 3, 3)

我知道我可以用 for 循环来做到这一点,但我想一定有一种方法可以更快、更直接地做到这一点。速度对于我的需求至关重要。

希望我的解释足够正确。预先感谢您。

最佳答案

In [301]: A = np.array([[1, 2, 2],
...: [4, 2, 3]])
...:
...:

这不是 dot 产品;没有乘积求和。相反,它更像是一个外部产品,增加了维数。具有广播功能的 numpy 可以很好地做到这一点:

In [302]: A[:,:,None]*A[:,None,:]
Out[302]:
array([[[ 1, 2, 2],
[ 2, 4, 4],
[ 2, 4, 4]],

[[16, 8, 12],
[ 8, 4, 6],
[12, 6, 9]]])

关于python - python - numpy 按行点积列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54411878/

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