Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/302.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用广播代替轴上的循环_Python_Python 3.x_Numpy_Array Broadcasting - Fatal编程技术网

Python 用广播代替轴上的循环

Python 用广播代替轴上的循环,python,python-3.x,numpy,array-broadcasting,Python,Python 3.x,Numpy,Array Broadcasting,假设我有: a = np.array([[2, 4], [6, 8]]) b = np.array([[1, 3], [1, 5]]) 我想去: c = np.array([[20,32], [28, 44]]) 其中c是a的每一列乘以b的结果,然后沿第一个轴对该结果求和 即: 我可以通过广播而不是: 使用np。沿\u轴应用\u或 在每一列中循环 您可以使用- 或者,使用(可能用于踢腿)- 你可以用

假设我有:

a = np.array([[2, 4],
              [6, 8]])    
b = np.array([[1, 3],
              [1, 5]])
我想去:

c = np.array([[20,32],
              [28, 44]])
其中
c
a
的每一列乘以
b
的结果,然后沿第一个轴对该结果求和

即:

我可以通过广播而不是:

  • 使用
    np。沿\u轴应用\u
  • 在每一列中循环
您可以使用-

或者,使用(可能用于踢腿)-

你可以用-

或者,使用(可能用于踢腿)-


1+对于井涌。和
einsum
对于较小的阵列将较慢,而对于较大的阵列将较快?@BradSolomon没有轴对齐要求,我认为随着您增加总和减少的数量,即使用大型阵列,
np.dot
会更好。1+用于踢击。而
einsum
对于较小的阵列会更慢,对于较大的阵列会更快?@BradSolomon没有轴对齐要求,我认为随着你增加求和减少的数量,即使用较大的阵列,
np.dot
会更好。
print(np.sum(a[:, 0] * b, axis=1))
[20 32]

print(np.sum(a[:, 1] * b, axis=1))
[28 44]
b.dot(a).T
np.einsum('ij,ki->jk',a,b)