从样本中创建3个列表,它们相互排斥,共同耗尽

2024-03-29 07:02:35 发布

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

假设我有一个YYYYMMDD格式的365个日期的主数组。为了这个例子,我想创建3个不同的列表,它们是唯一的,但也会占用365个日期的全部时间

作为一个整体的例子,让我们以2017年为例,我想从365天中创建3个相互排斥、共同详尽的列表。换句话说,array1中的日期都不在array2或array3中,array2中的日期也不在array3中。Array1的长度为300,array2的长度为64,array3的长度仅为1

我知道这可以通过列表和集合来实现,也可以通过包含“not in”来实现,但我一直在循环,什么都不起作用。对于这样的问题,最好的解决办法是什么


Tags: in列表格式时间not数组例子整体
2条回答

或许可以使用无序排列来随机排列数组,然后分割得到的无序排列列表

shuffle(arr)
arr1 = arr[0:300]
arr2 = arr[300:364]
arr3 = arr[364:365]

我会用pandas轻松创建日期,转换成numpy数组,然后使用numpy.random.shuffle

import pandas as pd
import numpy as np
list_of_dates = pd.date_range('2019-01-01', periods=365, freq='D') #Creates the list with all the dates for the year 2019.
dates = np.array(list_of_dates) #Transform it into a np.array to apply random.shuffle() later
np.random.shuffle(dates) #randomize the order of the list
list_1 = dates[0:300] #create 1st list
list_2 = dates[301:364] #create 2nd list
list_3 = dates[364:-1] #create 3rd list

测试:

print(list_1[0:3])

输出:

['2019-01-19T00:00:00.000000000' '2019-04-04T00:00:00.000000000'
 '2019-03-10T00:00:00.000000000']

相关问题 更多 >