我有两个像这样的矩阵操作数:
a = np.array([[1,2], [3,4], [5,6], [7,8]])
b = np.array([[9,10], [11,12], [13,14]])
如果我们调试
a
和 b
,它们将如下所示:
[[1 2]
[3 4]
[5 6]
[7 8]]
(4, 2)
int32
[[ 9 10]
[11 12]
[13 14]]
(3, 2)
int32
我可以通过这种方式实现我想要的,其中
c
是结果:
c = []
for i in range(b.shape[0]):
c.append(b[i] - a)
c = np.array(c)
现在,
c
将如下所示:
[[[ 8 8]
[ 6 6]
[ 4 4]
[ 2 2]]
[[10 10]
[ 8 8]
[ 6 6]
[ 4 4]]
[[12 12]
[10 10]
[ 8 8]
[ 6 6]]]
(3, 4, 2)
int32
如你所见,我如何执行减法仍然使用
for looping
,是否有numpythonic方式可以在不使用循环的情况下进行减法,以便我可以利用numpy优化,因此性能会更快,因为numpy使用C language
。
直接使用 numpy 数组运算符执行此操作将是:
b[:, None] - a