【发布时间】:2015-04-24 19:36:30
【问题描述】:
我想沿轴(第 1 列)对 bin 中的数据值(例如第 2 列)进行不同的百分比切割(例如第 25、第 75 等),其格式如下:
25.4 14.29 15.25 14.58 10.02
34.4 14.34 15.32 14.62 10.03
90.4 14.44 14.82 14.59 8.58
90.6 14.00 14.83 14.60 8.56
54.4 14.00 14.83 14.60 8.56
...
这样的行数以千计,并且它们在第一列中分布不均匀(例如,如果我将它们分成 0-10、10-20 等,每个 bin 中有不同数量的行)。我在挠头,因为我认为我可以使用 numpy.percentile,并将数据读入一个 2D 数组,这些数组排列成根据第一列分箱的子数组,并使用 axis 参数指定沿正确的轴进行百分比切割.但是,numpy.percentile 似乎需要一个矩形数组(即恰好 [M,N] 值),并且在这种情况下不灵活。
所以,我正在寻找一种沿轴执行此类操作的方法。只是给你一个我如何沿轴取平均值的例子,这是我使用的常用代码,依赖于 numpy.histogram:
nval = numpy.histogram(val1,10,range=[0,100])[0]
val2sum= numpy.histogram(val1,10,range=[0,100],weights=val2)[0]
val2mean = val2sum/nval
其中 val1 是第一列。所以,我的 Python 知识水平对于做除平均值以外的任何事情都是相当有限的,所以学习沿轴进行百分位数切割和中位数将非常有帮助。有什么建议?谢谢。
【问题讨论】:
标签: python arrays numpy median percentile