gpt4 book ai didi

python - 给定矩阵列表,对它们求和但忽略某些矩阵的行

转载 作者:太空宇宙 更新时间:2023-11-03 15:02:19 25 4
gpt4 key购买 nike

举个例子

A = np.array([[a1, a2],
[a3, a4]])
B = np.array([[b1, b2],
[b3, b4]])
C = np.array([[c1, c2],
[c3, c4]]),

l = [A, B, C],让

I = np.array([[1, 0, 1],
[0, 1, 1]]).

我要计算矩阵R

R = np.array([[a1 + c1, a2 + c2],
[b3 + c3, b4 + c4]])

即一般来说,我有一个 k nxm 矩阵列表存储在 l 和一个索引矩阵 I 维度 nxk 指定结果 R每一行 lk 矩阵中的哪一个> 应该用于计算 R 的那一行。上面,I 的第一行是 [1, 0, 1] 因此使用了 AC在计算第一行的R

我可以为此使用哪个 numpy 函数?

最佳答案

假设 l 作为 (n,m) 形数组的输入列表,您可以使用非常高效的 np.einsum , 像这样 -

np.einsum('ij,jik->ik',I,l)

sample 运行-

In [75]: # Inputs
...: a1,a2,a3,a4 = 4,6,8,2
...: b1,b2,b3,b4 = 5,11,4,3
...: c1,c2,c3,c4 = 6,99,2,5
...:
...: A = np.array([[a1, a2],
...: [a3, a4]])
...: B = np.array([[b1, b2],
...: [b3, b4]])
...: C = np.array([[c1, c2],
...: [c3, c4]])
...: l = [A,B,C]
...:
...: I = np.array([[1, 0, 1],
...: [0, 1, 1]])
...: # Expected output
...: R = np.array([[a1 + c1, a2 + c2],
...: [b3 + c3, b4 + c4]])
...:

In [76]: R
Out[76]:
array([[ 10, 105],
[ 6, 8]])

In [77]: np.einsum('ij,jik->ik',I,l)
Out[77]:
array([[ 10, 105],
[ 6, 8]])

关于python - 给定矩阵列表,对它们求和但忽略某些矩阵的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36541731/

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