gpt4 book ai didi

python - 复杂的 numpy 数组乘法

转载 作者:行者123 更新时间:2023-11-30 23:29:00 26 4
gpt4 key购买 nike

我有两个数组:

 a = [[a11,a12],
[a21,a22]]

b = [[b11,b12],
[b21,b22]]

我想做的是建立一个矩阵,如下所示:

xx = np.mean(a[:,0]*b[:,0])
xy = np.mean(a[:,0]*b[:,1])
yx = np.mean(a[:,1]*b[:,0])
yy = np.mean(a[:,1]*b[:,1])

并返回一个数组 c 使得

c = [[xx,xy],
yx,yy]]

在 numpy 中是否有一个很好的 Pythonic 方法来做到这一点?因为目前我已经手动完成了,与上面完全相同,所以输出数组的尺寸是手动编码的,而不是根据输入数组 a 和 b 的大小确定。

最佳答案

你的第三个元素有错误吗?如果您想要 yx = np.mean(a[:,1]*b[:,0])(看起来合理)而不是yx = np.mean(b[:,1]*a[:,0]) ,那么您可以尝试以下操作:

a = np.random.rand(2, 2)
b = np.random.rand(2, 2)
>>> c
array([[ 0.26951488, 0.19019219],
[ 0.31008754, 0.1793523 ]])
>>> np.mean(a.T[:, None, :]*b.T, axis=-1)
array([[ 0.26951488, 0.19019219],
[ 0.31008754, 0.1793523 ]])

避免中间数组并将结果表示为矩阵乘法实际上会更快:

>>> np.dot(a.T, b) / a.shape[0]
array([[ 0.26951488, 0.19019219],
[ 0.31008754, 0.1793523 ]])

关于python - 复杂的 numpy 数组乘法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21380585/

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