Python 将numpy差异广播到第三维度 安装程序

Python 将numpy差异广播到第三维度 安装程序,python,pandas,numpy,Python,Pandas,Numpy,我需要取第一行A与每行B的差值。如果我这样做: import numpy as np A = np.array([[1, 2], [2, 3]]) B = np.array([[1, 1], [2, 2], [4, 3]]) A array([[1, 2], [2, 3]]) B array([[1, 1], [2, 2], [4, 3]]) 我只需要为每一行的B 非矢量化方法是: A - B[0] array([[0, 1],

我需要取第一行
A
与每行
B
的差值。如果我这样做:

import numpy as np

A = np.array([[1, 2], [2, 3]])
B = np.array([[1, 1], [2, 2], [4, 3]])

A

array([[1, 2],
       [2, 3]])

B

array([[1, 1],
       [2, 2],
       [4, 3]])
我只需要为每一行的B

非矢量化方法是:

A - B[0]

array([[0, 1],
       [1, 2]])
问题:
获得相同三维阵列的矢量化方法是什么?如果熊猫更容易,我可以使用熊猫。最简单的方法是为
numpy
B
数组添加一个维度,以便正确地广播它:

np.array([A - B[i] for i in range(B.shape[0])])

array([[[ 0,  1],
        [ 1,  2]],

       [[-1,  0],
        [ 0,  1]],

       [[-3, -1],
        [-2,  0]]])

为了帮助理解数组维度是如何扩展的,值得注意的是,在本例中,
B[:,np.newaxis]
等效于
B[:,np.newaxis,:]
In [15]: A - B[:, np.newaxis]
Out[15]:
array([[[ 0,  1],
        [ 1,  2]],

       [[-1,  0],
        [ 0,  1]],

       [[-3, -1],
        [-2,  0]]])