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

2024-06-13 03:00:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个约100000个数据点的数据集,我需要能够每隔10000个数据点选择一组,并将它们附加到一个新的列表中(因此,我将最终得到一个数据点集0-10000、20000-30000、40000-50000等)。我不能通过简单地设置值本身的阈值来分离数据,我需要通过索引来分离

我想我需要写一个循环,它可以按顺序选择前10000个数据点,检查迭代次数是奇数还是偶数,如果是奇数,则附加到新列表,然后重复循环,但是由于下一次迭代是偶数,第二个10000个数据点被忽略,依此类推,直到结束。我理解逻辑,对该怎么做有一个模糊的想法,但我是一个化学家,而不是一个程序员,我不知道足够的Python语法,甚至开始在google上搜索我需要的命令。我不知道如何连续调用每一组一万个数据点,也不知道如何告诉Python计算迭代次数,更不用说忽略每一个偶数


Tags: 数据命令列表顺序google语法阈值逻辑
2条回答

有更复杂的方法可以使用列表理解等来实现这一点,但这里有一种方法可能最容易理解:

假设您的数据位于数组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)

在一个较小的列表中尝试一下,然后扩展到较大的列表中,怎么样

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

相关问题 更多 >