如何选择数组中的每隔一组数据?

时间:2019-03-01 14:00:13

标签: python

我有一个约100,000个数据点的数据集,我需要能够选择每隔10,000个数据点的每组并将它们附加到新列表中(这样我将得到一个数据点为0的数据集-10000、20,000-30,000、40,000-50,000等)。我不能仅通过阈值本身来分隔数据,我需要按索引分隔。

我想我需要编写一个循环,该循环可以按顺序选择前10,000个数据点,检查迭代次数是奇数还是偶数,如果是奇数,则将其追加到新列表中,然后重复循环,但是由于下一次迭代是偶数,因此将忽略后10,000个数据点,依此类推直至结束。我了解逻辑并不清楚该怎么做,但是我是化学家,而不是程序员,而且我不了解足够的Python语法,甚至无法开始使用谷歌搜索来尝试找出所需的命令。我不知道如何连续调用每组一万个数据点,也不知道如何告诉Python计算迭代次数,更不用说忽略每一个了!

2 个答案:

答案 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]]