gpt4 book ai didi

python - 我如何获得点积但没有求和

转载 作者:太空狗 更新时间:2023-10-30 02:09:05 25 4
gpt4 key购买 nike

考虑数组的 ab

a = np.array([
[-1, 1, 5],
[-2, 3, 0]
])
b = np.array([
[1, 1, 0],
[0, 2, 3],
])

看着

d = a.T.dot(b)
d

array([[-1, -5, -6],
[ 1, 7, 9],
[ 5, 5, 0]])

d[0, 0]-1。并且是 a[:, 0] * b[:, 0] 的总和。我想要一个 2x2 向量数组,其中 [0, 0] 位置为 a[:, 0] * b[:, 0]

对于上面的ab,我希望

d = np.array([[a[:, i] * b[:, j] for j in range(a.shape[1])] for i in range(b.shape[1])])

d

array([[[-1, 0],
[-1, -4],
[ 0, -6]],

[[ 1, 0],
[ 1, 6],
[ 0, 9]],

[[ 5, 0],
[ 5, 0],
[ 0, 0]]])

沿axis==2d 之和应该是点积a.T.dot(b)

d.sum(2)

array([[-1, -5, -6],
[ 1, 7, 9],
[ 5, 5, 0]])

问题

获得 d 的最有效方法是什么?

最佳答案

这是一种方法:

In [219]: a
Out[219]:
array([[-1, 1, 5],
[-2, 3, 0]])

In [220]: b
Out[220]:
array([[1, 1, 0],
[0, 2, 3]])

In [221]: a.T[:,None,:] * b.T[None,:,:]
Out[221]:
array([[[-1, 0],
[-1, -4],
[ 0, -6]],

[[ 1, 0],
[ 1, 6],
[ 0, 9]],

[[ 5, 0],
[ 5, 0],
[ 0, 0]]])

或者...

In [231]: (a[:,None,:] * b[:,:,None]).T
Out[231]:
array([[[-1, 0],
[-1, -4],
[ 0, -6]],

[[ 1, 0],
[ 1, 6],
[ 0, 9]],

[[ 5, 0],
[ 5, 0],
[ 0, 0]]])

关于python - 我如何获得点积但没有求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38981194/

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