gpt4 book ai didi

Python numpy 广播 3 维(多加权和)

转载 作者:行者123 更新时间:2023-11-28 16:36:35 25 4
gpt4 key购买 nike

我已经习惯于使用 2 维数组进行广播,但我无法理解我想做的这个 3 维数组。

我有两个二维数组:

>>> a = np.array([[0.01,.2,.3,.4],[.2,.03,.4,.5],[.9,.8,.7,.06]])
>>> b= np.array([[1,2,3],[3.,4,5]])
>>> a
array([[ 0.01, 0.2 , 0.3 , 0.4 ],
[ 0.2 , 0.03, 0.4 , 0.5 ],
[ 0.9 , 0.8 , 0.7 , 0.06]])
>>> b
array([[ 1., 2., 3.],
[ 3., 4., 5.]])

现在,我想要的是 a 中所有行的总和,其中每行由 b 中的列值加权。所以,我想要 1。 * a[0,:] + 2. * a[1,:] + 3. * a[2,:] 和 b 的第二行相同

所以,我知道如何逐步执行此操作:

>>> (np.array([b[0]]).T * a).sum(0)
array([ 3.11, 2.66, 3.2 , 1.58])

>>> (np.array([b[1]]).T * a).sum(0)
array([ 5.33, 4.72, 6. , 3.5 ])

但我有一种感觉,如果我知道如何将这两个正确地广播为 3 维数组,我可以一次性获得我想要的结果。结果是:

array([[ 3.11,  2.66,  3.2 ,  1.58],
[ 5.33, 4.72, 6. , 3.5 ]])

我想这应该不会太难..?!?

最佳答案

你想做矩阵乘法:

>>> b.dot(a)
array([[ 3.11, 2.66, 3.2 , 1.58],
[ 5.33, 4.72, 6. , 3.5 ]])

关于Python numpy 广播 3 维(多加权和),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25399749/

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