我有一个约100,000个数据点的数据集,我需要能够选择每隔10,000个数据点的每组并将它们附加到新列表中(这样我将得到一个数据点为0的数据集-10000、20,000-30,000、40,000-50,000等)。我不能仅通过阈值本身来分隔数据,我需要按索引分隔。
我想我需要编写一个循环,该循环可以按顺序选择前10,000个数据点,检查迭代次数是奇数还是偶数,如果是奇数,则将其追加到新列表中,然后重复循环,但是由于下一次迭代是偶数,因此将忽略后10,000个数据点,依此类推直至结束。我了解逻辑并不清楚该怎么做,但是我是化学家,而不是程序员,而且我不了解足够的Python语法,甚至无法开始使用谷歌搜索来尝试找出所需的命令。我不知道如何连续调用每组一万个数据点,也不知道如何告诉Python计算迭代次数,更不用说忽略每一个了!
答案 0 :(得分:0)
使用列表理解等方法有更复杂的方法,但这是一种可能最容易理解的方法:
假设您的数据位于数组data
中。
import numpy as np
data = list(data)
data_subset = []
interval_length = 10,000
n_intervals = int(len(data)/interval_length)
# get every other data interval, starting with the first
for i in range(0, n_intervals, 2):
start_index = i * interval_length
stop_index = start_index + interval_length
data_subset += data[start_index:stop_index]
data_subset = np.array(data_subset)
print(data_subset)
答案 1 :(得分:0)
如何在较小的列表上尝试然后将其扩展到较大的列表呢?
ls = [1,2,2,2,2,11,2,2,3,4,44,399,9,9,0]
group_sizes = 3
# getting groups of size 'group_sizes' and then choosing every other one ...
groups = [ls[n:n+group_sizes] for n in range(0, len(ls), group_sizes) if n % 2 == 0]
输出
print groups
# [[1, 2, 2], [2, 2, 3], [9, 9, 0]]