我有以下代码:
X = np.array([[2,2,2,4,5,6],[1,2,3,3,3,4]])
mu = np.mean(X,axis=1)
我的问题:
当我尝试从数据(X-mu)中减去平均值时,出现以下错误: 操作数无法与形状一起广播(2,6)(2,) 这是有道理的,但仍然无法从这个数据中减去平均值X.我期待以下结果:
1.5 1.5 1.5 0.5 1.5 2.5
1.67 0.67 0.33 0.33 0.33 1.33
非常感谢任何帮助,提前谢谢。
答案 0 :(得分:1)
X = np.array([[2,2,2,4,5,6],[1,2,3,3,3,4]])
mu = np.mean(X,axis=1).reshape((2,1))
X-mu
但是,这并不会产生您期望的结果,但是:
[[-1.5,-1.5,-1.5,0.5,1.5,2.5],
[-1.66666667, -0.66666667, 0.33333333, 0.33333333, 0.33333333,1.33333333]]
在我看来这是正确的。
答案 1 :(得分:1)
In [162]: X = np.array([[2,2,2,4,5,6],[1,2,3,3,3,4]])
mu
不是2x1,而是(2,),1d。
In [163]: mu = np.mean(X,axis=1)
In [164]: mu.shape
Out[164]: (2,)
要从(2,6)中减去它,你将它变成(2,1)数组。 mu[:,None]
与reshape
一样。
另一种选择是向mean
询问keepdims
:
In [165]: mu = np.mean(X,axis=1,keepdims=True)
In [166]: mu.shape
Out[166]: (2, 1)
In [167]: X-mu
Out[167]:
array([[-1.5 , -1.5 , -1.5 , 0.5 , 1.5 ,
2.5 ],
[-1.66666667, -0.66666667, 0.33333333, 0.33333333, 0.33333333,
1.33333333]])