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]]])