从每列中扣除中值

2024-03-28 09:47:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个数据帧,df和数字,如下所示:

1 1 1
2 1 1
2 1 3

我想从每一列中扣除中值,这样每个列的中值就变成0。在

^{pr2}$

我该怎么用毕达的方式来做?我猜这是可能的,不需要迭代数值,计算中值,然后扣除。我想简明扼要地说,大概是这样:

from numpy import median
df -= median(df) #does not work, deducts median for whole dataframe

Tags: 数据fromimportnumpydffor方式not
2条回答

就像这样

df -= df.median(axis=0)

numpymedian计算总体数据的中位数。 若要使用numpy完成,请改为尝试以下代码。在

^{pr2}$

有关详细信息,请参阅文档:http://docs.scipy.org/doc/numpy/reference/generated/numpy.median.html

ipython中的一些测试显示:

In [23]: A = numpy.arange(9)

In [24]: B = A.reshape((3,3))

In [25]: C = numpy.median(B,axis=0)

In [26]: D = B - C[None,:]

In [27]: B
Out[27]: 
array([[0, 1, 2],
       [3, 4, 5],
       [6, 7, 8]])

In [28]: D
Out[28]: 
array([[-3., -3., -3.],
       [ 0.,  0.,  0.],
       [ 3.,  3.,  3.]])
In [29]: C
Out[29]: array([ 3.,  4.,  5.])

所以下一行是沿着柱的中间值

^{pr2}$

下一行从矩阵中逐列减去它

D = B - C[None,:]

相关问题 更多 >