gpt4 book ai didi

python - 使用 numpy einsum 计算矩阵列向量的内积

转载 作者:行者123 更新时间:2023-11-28 21:38:35 30 4
gpt4 key购买 nike

假设我有一个像这样的 numpy 矩阵:

[[   1    2    3]
[ 10 100 1000]]

我想计算每一列与其自身的内积,所以结果是:

[1*1 + 10*10    2*2 + 100*100    3*3 + 1000*1000] == [101, 10004, 1000009]

我想知道使用 einsum 是否可行功能(并更好地理解它)。

到目前为止,我能得到的最接近的结果是:

import numpy as np

arr = np.array([[1, 2, 3], [10, 100, 1000]])

res = np.einsum('ij,ik->jk', arr, arr)

# [[ 101 1002 10003]
# [ 1002 10004 100006]
# [ 10003 100006 1000009]]

对角线包含预期结果,但我想知道是否可以避免边缘计算。

最佳答案

使用np.einsum , 像这样 -

np.einsum('ij,ij->j',arr,arr)

sample 运行-

In [243]: np.einsum('ij,ij->j',arr,arr)
Out[243]: array([ 101, 10004, 1000009])

或者用 np.sum -

In [244]: (arr**2).sum(0)
Out[244]: array([ 101, 10004, 1000009])

或用numexpr module -

In [248]: import numexpr as ne

In [249]: ne.evaluate('sum(arr**2,0)')
Out[249]: array([ 101, 10004, 1000009])

关于python - 使用 numpy einsum 计算矩阵列向量的内积,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48066890/

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