【问题标题】:How to split an array into bins of equal length in python?如何在python中将数组拆分为等长的bin?
【发布时间】:2019-12-24 08:08:11
【问题描述】:

我想将一个包含 1000 个数据点的数组划分为每个包含 100 个数据点的箱。然后,我想分别计算这些 bin 的平均值。

有人可以建议如何将 numpy 数组中的数据划分到 bin 中吗? 这是我尝试过的。

import numpy as np

f = np.random.random((1000))
bin_1 = f[0:100]
mean_1= bin_1.mean()
print(bin_1, mean_1)

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:
    import numpy as np
    
    f = np.loadtxt('ising_T2.dat',usecols=(0))
    chunk_begin, chunk_end = 0, 100
    splitted_bins = []
    splitted_means = []
    for _ in range(9):
        bin = f[chunk_begin:chunk_end]
        mean = bin.mean()
        splitted_bins.append(bin)
        splitted_means.append(mean)
        chunk_begin, chunk_end = chunk_begin + 100, chunk_end + 100
    print(splitted_bins, splitted_means)
    

    不知道是不是你想要的

    【讨论】:

    • 你能告诉我'chunk_begin, chunk_end = chunk_begin + 100, chunk_end + 100' 在代码中做了什么吗..
    • 获取chunk_begin的当前值和chunk_end的当前值并递增100
    【解决方案2】:

    如果您的列表始终具有 1000 个数据点的恒定大小,您可以简单地编写一个从 0 到 1000 的 for 循环。此循环将在每次迭代时增加 100 的主索引。您可以计算 list[i-100:i] 的平均结果。

    例如:

    f = np.loadtxt('ising_T2.dat',usecols=(0))
    
    for (i = 100; i < 1000; i += 100) {
        // mean = f[i - 100:i].mean()
    }
    

    类似的东西。诀窍是您可以使用变量裁剪列表。

    【讨论】:

      猜你喜欢
      • 2017-04-15
      • 2018-08-01
      • 2021-12-19
      • 2012-04-12
      • 1970-01-01
      • 2014-06-15
      • 1970-01-01
      • 2023-03-05
      • 1970-01-01
      相关资源
      最近更新 更多