小编Jac*_*dge的帖子

在日期列表中查找最近的过去日期

我试图在日期列表中找到距离当前日期最近的过去日期。我发现了几个在列表中搜索最近日期的示例,但所有这些都允许选择返回进一步的日期。

日期时间列表具有以下形式:

datelist =
[datetime.datetime(2019, 12, 31, 0, 0),
 datetime.datetime(2020, 1, 10, 0, 0),
 datetime.datetime(2020, 1, 20, 0, 0),
 datetime.datetime(2020, 1, 31, 0, 0),
 datetime.datetime(2020, 2, 10, 0, 0),
 datetime.datetime(2020, 2, 20, 0, 0)]
Run Code Online (Sandbox Code Playgroud)

到目前为止,我一直在实现以下函数来查找最接近的日期;

def nearest_ind(items, pivot):
    '''
    Find the nearest value to the given value (the pivot) in a list.
    '''
    time_diff = np.abs([date - pivot for date in items])
    return time_diff.argmin(0)
Run Code Online (Sandbox Code Playgroud)

但这会返回与当前日期最接近的日期,有一半的情况会返回未来最接近的日期。我也一直在考虑实现 numpy searchsorted 函数,但这似乎总是返回最近的未来日期,无论我为侧面参数选择“右”还是“左”,方法如下:

np.searchsorted(datelist, datetime.datetime.now(), side='right')
np.searchsorted(datelist, datetime.datetime.now(), side='left')
Run Code Online (Sandbox Code Playgroud)

在任一实例中,numpy searchsorted 函数都会返回(如果我今天运行它,即 2020 年 2 …

python sorting datetime numpy

3
推荐指数
1
解决办法
2247
查看次数

屏蔽 xarray 中的数据并更改 True 和 False 响应的值

我有一个 xarray DataArray,其中包含多天的数据。我可以使用 .where 函数为一个条件屏蔽它,但我想让所有值超过某个值 1 并且所有值低于该值 0。理想情况下,我还想确保任何 np.数据集中的 nans 没有改变,但这不是必需的。

import numpy as np
import xarray as xr

dval = np.random.randint(5,size=[3,4,4])
x = [0,1,2,3]
y = [0,1,2,3]
time = ['2017-10-13','2017-10-12','2017-10-11']

a = xr.DataArray(dval,coords=[time,x,y],dims=['time','x','y'])
a = a.where(a>2,1,0) #ideally this would work as (condition,True val, False val)
Run Code Online (Sandbox Code Playgroud)

这会导致“如果 drop=True 则无法设置‘其他’”的 ValueError

对此的任何帮助将不胜感激。

python-3.x python-xarray data-masking

2
推荐指数
1
解决办法
2686
查看次数