【发布时间】:2019-09-10 21:59:44
【问题描述】:
让 A 和 B 是两个形状分别为 ( X , Y ) 和 ( Z , Y ) 的 numpy 数组。我需要一个形状为 ( X , Y , Z ) 的数组 C 其中,对于每个 x 、 y 和 z,C[ x , y , z ] = A[ x , y ] - B[ z , y ]。
我知道计算 C 的最快方法是从 A 的每一行中减去 B,就像在这个代码示例中一样。
import numpy
X , Y , Z = 10 , 8 , 3
A = numpy.random.rand( ( X , Y ) )
B = numpy.random.rand( ( Z , Y ) )
C = numpy.zeros( ( X , Y , Z ) )
for x in range( X ):
C[ x ] = A[ x ] - B
print( A , B , C , sep = "\n\n")
有没有什么向量化的方式可以做到这一点而不需要使用循环,这样代码可以运行得更快?
感谢您的帮助:)
【问题讨论】:
-
使用
A[..., None] - B.T