gpt4 book ai didi

numpy - 第 i 行与第 i 列的点积

转载 作者:行者123 更新时间:2023-12-04 12:58:18 25 4
gpt4 key购买 nike

在 NumPy 中:

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

B = np.array([[1,2],[3,4],[5,6]])
array([[1, 2],
[3, 4],
[5, 6]])

A.dot(B)
array([[35, 44],
[44, 56]])

我只关心获取 A.dot(B).diagonal() = array([35, 56])

有没有一种方法可以得到 array([35, 56]) 而不必计算所有行和列的内积? IE。 第i行第i列的内积?

我问是因为对于较大的矩阵,性能差异变得更加显着。

最佳答案

这只是二维数组的矩阵乘法:

C[i, j] = sum(A[i, ] * B[, j])

所以既然你只想要对角线元素,看起来就像你在追求

sum(A[i, ] * B[, i]) # for each i

所以你可以只使用列表理解:

[np.dot(A[i,:], B[:, i]) for i in xrange(A.shape[0])]
# [22, 64]

或者,(这只适用于你想要一个对角线 所以这假设如果 A 的尺寸是 n x m,B 的尺寸将是 m x n):

np.sum(A * B.T, axis=1)
# array([22, 64])

(这里没有花哨的 numpy 技巧,只是玩弄数学)。

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

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