如何获取1993-2019年7、8、9月对应的十进制格式时间数组
实现方法
你可以通过两种方式实现需求,结果完全匹配你给出的示例格式:
方法1:基于已有全量月份数组筛选
你已生成的full_time_months是按每年1-12月顺序排列的一维数组,仅需按年份分组后提取对应月份即可:
# 将一维数组转为[年份数, 12个月]的二维结构 year_month_matrix = full_time_months.reshape(-1, 12) # 0索引下6、7、8位置对应每年7、8、9月,提取后展平为一维数组 target_time_arr = year_month_matrix[:, [6,7,8]].flatten()
方法2:直接生成目标数组(性能更优)
不需要先生成全量12个月的数据,直接通过广播运算生成7、8、9月的时间数组:
import numpy as np year_start = 1993 year_end = 2019 # 生成所有年份序列 years = np.arange(year_start, year_end + 1) # 7、8、9月对应的十进制偏移量(月中位置,和你原生成逻辑一致) month_offsets = np.array([6.5, 7.5, 8.5]) / 12 # 广播运算后展平得到最终数组 target_time_arr = (years[:, np.newaxis] + month_offsets).flatten()
结果验证
输出结果完全符合你的预期:
# 前三个元素为1993年7、8、9月 [1993.54166667 1993.625 1993.70833333] # 最后三个元素为2019年7、8、9月 [2019.54166667 2019.625 2019.70833333]
内容的提问来源于stack exchange,提问作者wabash
相关产品推荐
相关产品推荐

