热线电话:13121318867

登录
2019-03-12 阅读量: 786
bin一列并且将(2,N)数组中的另一个相加

我有一个如下数据集:

import numpy as np
x = np.arange(
0,10000,0.5)
y = np.arange(x.size)/x.size

import matplotlib.pyplot as plt
plt.loglog(x, y)
plt.show()

在此输入图像描述

显然,此日志日志图中有大量冗余信息。我不需要10000点来代表这种趋势。

我的问题是:如何将这些数据分类,以便在对数刻度的每个数量级上显示统一数量的点?在每个数量级,我想得到大约十分。因此,我需要使用指数增长的bin大小来“x”,然后获取y对应于每个bin 的所有元素的平均值。

# need a nicer way to do this.
# what if I want more than 10 bins per order of magnitude?
bins =
10**np.arange(1,int(round(np.log10(x.max()))))
bins = np.unique((bins.reshape(-
1,1)*np.arange(0,11)).flatten())

#array([ 0, 10, 20, 30, 40, 50, 60, 70, 80,
# 90, 100, 200, 300, 400, 500, 600, 700, 800,
# 900, 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000,
# 9000, 10000])

解决办法:可以使用np.logspace和np.outer创建任意n值的bin,如下所示。默认基数logspace为10.它生成对数间隔点,类似于linspace生成线性间隔网格。

11.0829
1
关注作者
收藏
评论(0)

发表评论

暂无数据
推荐帖子