如何在NumPy中用固定datetime64值填充数组?
更简洁可读的NumPy固定datetime64数组填充方法
这里有几种比你当前实现更直观、可读性更强的方式:
方法1:使用np.full()(推荐)
np.full()是NumPy专门用来创建填充固定值数组的函数,语义清晰,一看就知道是生成指定形状、全为某个值的数组:
shape = (5,) date = "2012-09" # 直接指定目标 dtype,或者将日期转为带日的格式(如"2012-09-01") date_array = np.full(shape, np.datetime64(date, 'D'), dtype='datetime64[D]')
如果你的日期输入已经是精确到日的格式(比如"2012-09-01"),可以省略dtype参数,np.full()会自动推断类型:
date = "2012-09-01" date_array = np.full(shape, np.datetime64(date))
方法2:使用np.broadcast_to()(内存高效)
如果不需要创建新的数组副本,只是想要一个广播后的视图,可以用np.broadcast_to(),它不会额外占用内存:
date_array = np.broadcast_to(np.datetime64(date, 'D'), shape)
如果后续需要修改数组内容,可以在末尾加上.copy()转为副本:
date_array = np.broadcast_to(np.datetime64(date, 'D'), shape).copy()
方法3:空数组赋值
先创建空数组,再统一赋值,逻辑也很清晰:
date_array = np.empty(shape, dtype='datetime64[D]') date_array[:] = np.datetime64(date)
这些方法都比你原来通过ones+timedelta的方式更直接,代码意图一目了然,维护起来也更方便。
内容的提问来源于stack exchange,提问作者Amir
相关产品推荐
相关产品推荐

