【发布时间】:2015-07-11 23:32:02
【问题描述】:
我正在使用 python。我正在尝试将一组数据划分为 1000 个元素范围并找到平均值,包括不存在为 0.0 的站点。
以下是数据示例。
X 2699528 0.000786782
X 2699555 0.493415
X 2699559 0.000786782
X 2699625 0.0748873
X 2699645 0.0712507
X 2699664 0.000786782
X 2699676 0.400653
X 2699683 0.0109586
X 2699711 0.000786782
X 2699739 0.00157294
X 2699906 0.0617229
X 2699919 0.000786782
X 2699934 0.000786782
X 2699968 0.498501
X 2700027 0.499971
X 2700040 0.000786782
X 2700089 0.0101799
X 2700147 0.000786782
X 2700157 0.0719793
X 2700185 0.00314341
X 2700189 0.000786782
我希望数据看起来像:
X 2700000 average1
X 2701000 average2
....
问题是每个范围内没有一致的数字。某些范围可能在该范围内有零个元素。此外,我不想要一个平均值,而是一个不包括在内的网站的平均值。基本上,如果我有
X 1 10
X 3 10
X 5 10
X 7 10
X 9 10
我不想返回 10 作为平均值,而是返回 5(五个 0 和五个 10)。
以下是我的代码。
import sys
sum = 0.0
startin = 2700000
for i in range(2700, 155000):
m = (i * 1000) + 1000
i = i * 1000
for line in sys.stdin:
data =line.strip().split('\t')
if data[0] == "CHROM":
continue
if int(data[1]) >= i and int(data[1]) <= m:
sum += float(data[2])
print i, (sum/1000)
continue
返回
2700000 0.002568799204
2701000 0.002568799204
2702000 0.002568799204
2703000 0.002568799204
2704000 0.002568799204
2705000 0.002568799204
2706000 0.002568799204
2707000 0.002568799204
2708000 0.002568799204
2709000 0.002568799204
2710000 0.002568799204
2711000 0.002568799204
2712000 0.002568799204
2713000 0.002568799204
2714000 0.002568799204
2715000 0.002568799204
2716000 0.002568799204
2717000 0.002568799204
2718000 0.002568799204
2719000 0.002568799204
2720000 0.002568799204
2721000 0.002568799204
2722000 0.002568799204
感谢您的帮助。
【问题讨论】:
-
所以...有什么问题?它不是快速方法,但似乎你得到了你想要的
-
所有的平均值都不同,但它只打印了第一项的平均值。