执行向量减法的数字方法,其中操作数具有不同的形状 (a,n) - (b,n)

问题描述 投票:0回答:1

我有两个像这样的矩阵操作数:

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

python numpy multidimensional-array tensor
1个回答
0
投票

直接使用 numpy 数组运算符执行此操作将是:

b[:, None] - a
© www.soinside.com 2019 - 2024. All rights reserved.