You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从两个时间温度数组中筛选与y日期匹配的日度数组x元素

实现方案

核心思路是将两个时间数组的时分秒信息截断,仅保留日期维度做匹配,再根据需求筛选/对齐数组。


方案1:纯NumPy实现(无额外依赖)

性能更高,适合纯NumPy场景使用:

import numpy as np

# 1. 截断时间,仅保留日期维度,自动丢弃时分秒信息
x_date = x.astype('datetime64[D]')
y_date = y.astype('datetime64[D]')

# 场景A:仅筛选x中存在对应y日期的元素,保留x原顺序
x_filtered = x[np.isin(x_date, y_date)]

# 场景B:需要x、y严格一一对应,顺序和y保持一致,长度完全相同
# 匹配y日期在x中的索引
y_to_x_idx = np.searchsorted(x_date, y_date)
# 过滤无效匹配(y的日期不在x的日期范围内的情况)
valid_mask = (y_to_x_idx < len(x_date)) & (x_date[y_to_x_idx] == y_date)
# 得到对齐后的数组
x_aligned = x[y_to_x_idx[valid_mask]]
y_aligned = y[valid_mask]

方案2:Pandas实现(更简洁,适合数据分析场景)

如果已经在使用Pandas做数据处理,语法更简洁,自动处理多对一匹配:

import pandas as pd

# 转Series并提取日期列
x_ser = pd.Series(x, name='x_time')
y_ser = pd.Series(y, name='y_time')
x_date = x_ser.dt.date
y_date = y_ser.dt.date

# 按日期内连接,自动对齐相同日期的元素
aligned_df = pd.merge(
    pd.DataFrame({'time': x, 'date': x_date}),
    pd.DataFrame({'time': y, 'date': y_date}),
    on='date',
    how='inner',
    suffixes=('_x', '_y')
)

# 提取对齐后的数组
x_aligned = aligned_df['time_x'].values
y_aligned = aligned_df['time_y'].values

内容的提问来源于stack exchange,提问作者MasterOcean

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:36:05