如何在numpy
中每两个月生成一个日期范围内的随机日期?我能想到的一种方法是生成两组随机整数数组:
bimonthly1 = np.random.randint(1,15,12)
bimonthly2 = np.random.randint(16,30,12)
字符串
然后,我可以生成日期,每个月的'day'值来自上述两个数组。然而,这需要我显式传递月份和年份数据。解决方案是首先生成所需的date_range
,并将范围中的'days'替换为上述数组值。但对于大型数组,这可能不是最好的解决方案。2这种方法需要对范围中的每个元素进行操作。
我将感谢任何关于如何在numpy
中更有效地做到这一点的指针。
5条答案
按热度按时间uxh89sit1#
有一种更简单的方法来实现这一点,而不需要显式调用numpy之外的任何库。
Numpy有一个非常强大的datetime数据类型:特别是在这种情况下,你可以添加和减去整数,它将其视为可用的最小时间单位。例如,对于%Y-%m-%d格式:
字符串
但是,对于%Y-%m-%d %H:%M:%S格式:
型
在这种情况下,由于您只有最小到一天分辨率的信息,因此您可以简单地执行以下操作:
型
或者你想更清楚地说
型
然后就用途:
型
slhcrj9b2#
你可以事先创建一个日期范围,例如使用
pandas
的date_range
,并将其转换为一个numpy数组。然后,使用numpy.random.choice
从这个日期数组中随机选择。5t7ly7z53#
如果您将开始日期定义为每月的第一天,然后添加一个随机的时间增量会怎么样?
例如
字符串
fnvucqvd4#
下面是一个纯numpy实现,它为一年中的每个月创建了两个datetime数组。第一个数组包含每个月上半月的随机值,第二个数组包含每个月下半月的随机值。
字符串
xoefb8l85#
所有已经给出的答案都涉及到一次生成多个日期时的某种循环。下面是一个完全并行化的函数,它使用与@Alex相同的基本方法,但完全没有迭代或追加。
这段代码不是通过添加已知的起始值来逐个构建数组,而是通过创建起始值数组和随机偏移量数组,然后将它们相加。
字符串