【发布时间】:2017-04-14 12:57:39
【问题描述】:
我有 2 个 numpy 数组 a 和 b,如下所示:
a = np.random.randint(0,10,(3,2))
Out[124]:
array([[0, 2],
[6, 8],
[0, 4]])
b = np.random.randint(0,10,(2,2))
Out[125]:
array([[5, 9],
[2, 4]])
我想从 a 中的每一行中减去 b 中的每一行,并且所需的输出是 shape(3,2,2):
array([[[-5, -7], [-2, -2]],
[[ 1, -1], [ 4, 4]],
[[-5, -5], [-2, 0]]])
我可以这样做:
print(np.c_[(a - b[0]),(a - b[1])].reshape(3,2,2))
但我需要一个完全矢量化的解决方案或一个内置的 numpy 函数来执行此操作。
【问题讨论】:
-
我所说的完全矢量化解决方案(之前因式分解是一个错字)的意思是我不想通过像 b[i] 这样的索引来引用数组 b,因为这个数组中的行数可以改变我想要一个解决方案,它总是输出一个形状数组 (3,len(b),2)