请问为什么在numpy广播中3行1列减3行47列的结果是3行1列而不是3行47列 求大神赐教
https://www.zhihu.com/question/61919551
减法是加法的逆运算。
我觉得是你的数据的shape有问题. 可能你认为的3行1列的数组实际上并不是3行1列.
下面针对题主的问题进行的实验.
In [16]: a = np.random.rand(3,1)
In [17]: a.shape
Out[17]: (3, 1)
In [18]: a = np.random.rand(3,1)
In [19]: a.shape
Out[19]: (3, 1)
In [20]: a
Out[20]:
array([[ 0.90544021],
[ 0.94176178],
[ 0.22644611]])
In [21]: b = np.random.rand(3,7)
In [22]: b.shape
Out[22]: (3, 7)
In [23]: b
Out[23]:
array([[ 0.44382308, 0.28795782, 0.63101411, 0.96780386, 0.40770587,
0.44703094, 0.30372423],
[ 0.45675273, 0.09796086, 0.0566005 , 0.49264376, 0.37514837,
0.90567161, 0.52436198],
[ 0.35413989, 0.78893729, 0.98127371, 0.97933932, 0.27661489,
0.29934424, 0.97276293]])
In [24]: (a-b).shape
Out[24]: (3, 7)
In [25]: a-b
Out[25]:
array([[ 0.46161713, 0.61748239, 0.2744261 , -0.06236366, 0.49773434,
0.45840927, 0.60171598],
[ 0.48500904, 0.84380091, 0.88516128, 0.44911802, 0.5666134 ,
0.03609016, 0.41739979],
[-0.12769379, -0.56249118, -0.75482761, -0.75289322, -0.05016878,
-0.07289813, -0.74631682]])
通过实验可以看到实际上正确广播了的.
python版本: 2.7.14+ (default, Feb 6 2018, 19:12:18) \n[GCC 7.3.0]
numpy版本: 1.21.1