python - 平均分箱中的数据

标签 python python-3.x numpy average scientific-computing

我有两个列表:一个是深度列表,另一个是叶绿素列表,它们一一对应。我想平均每 0.5 m 深度的叶绿素数据。

chl  = [0.4,0.1,0.04,0.05,0.4,0.2,0.6,0.09,0.23,0.43,0.65,0.22,0.12,0.2,0.33]
depth = [0.1,0.3,0.31,0.44,0.49,1.1,1.145,1.33,1.49,1.53,1.67,1.79,1.87,2.1,2.3]

深度箱的长度并不总是相等,也不总是从 0.0 或 0.5 间隔开始。不过,叶绿素数据始终与深度数据协调。叶绿素平均值也不能按升序排列,它们需要根据深度保持正确的顺序。深度和叶绿素列表很长,所以我无法单独完成。

我如何制作 0.5 米深度的容器,其中包含平均叶绿素数据?

目标:

depth = [0.5,1.0,1.5,2.0,2.5]
chlorophyll = [avg1,avg2,avg3,avg4,avg5]

例如:

avg1 = np.mean(0.4,0.1,0.04,0.05,0.4)

最佳答案

我很惊讶scipy.stats.binned_statistic还没有被提及。您可以直接用它计算平均值,并使用可选参数指定 bins。

from scipy.stats import binned_statistic

mean_stat = binned_statistic(depth, chl, 
                             statistic='mean', 
                             bins=5, 
                             range=(0, 2.5))

mean_stat.statistic
# array([0.198,   nan, 0.28 , 0.355, 0.265])
mean_stat.bin_edges
# array([0. , 0.5, 1. , 1.5, 2. , 2.5])
mean_stat.binnumber
# array([1, 1, 1, ..., 4, 5, 5])

关于python - 平均分箱中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49844496/

相关文章:

python - 组合 for 和 if 循环

python - 如何将内存装饰器应用于实例方法?

python - 多处理 scikit-learn

python - 为什么我的 Sprite 不经常出现,而不是静止不动时通过图像动画

python - 有没有办法使用 Python 脚本读取 .one(OneNote 文件)?

python-3.x - pop() 和 enumerate() 如何交互的问题

python - 清理csv数据,w/pandas有没有办法找到第一个可以转换为#的obj列?

python - Sympy:lambda 化使得对数组的操作总是产生数组,对于常量也是如此?

python - Flask:单元测试时,request.authorization 始终为 None

python - 替换多行字符串中除空格和\r\n 之外的每个字符,如何替换?