【问题标题】:Python numpy where function with datetimePython numpy where 函数与日期时间
【发布时间】:2014-06-14 20:44:55
【问题描述】:

我有一组 30 年的每日日期时间。我正在尝试使用np.where 按月和日过滤此数组,以便找到一年中每一天的相应数据条目的平均值。

但是,我得到了错误:

AttributeError: 'list' object has no attribute 'month'

我这样做时可以正确查询数据:

print "dates[100].month: ", dates[100].month

有什么方法可以使用numpywhere函数查询datetime条目?

我目前的代码是:

clim = np.zeros((12,31))

m_arr = range(1,13)  # months array
d_arr = range(1,32)  # days array

for i in range(len(m_arr)):

for j in range(len(d_arr)):

    # finding indexes of the dates array

    tt, = np.where((dates.month == i) & (dates.day == j))
    data2 = np.zeros(len(tt))
    dates2 = np.zeros(len(tt))

    if len(tt) > 0:

    for num in range(len(tt)):

                site = tt[num]
            dates2[num] = dates[site]
        data2[num] = data[site]

        clim[i,j]=data2[~np.isnan(data2)].mean()      # some nan entries in data

【问题讨论】:

    标签: python arrays datetime numpy


    【解决方案1】:

    由于dates是一个列表,它不能用作datetime,即使它的元素是datetime类型。所以不是

    dates.month == i
    

    你需要类似的东西

    [d.month == i for d in months]
    

    【讨论】:

    • 感谢您查看此内容。我试过:tt, = np.where([d.month == i+1 for d in dates]),这在几个月内工作得很好,但我似乎无法让它同时过滤月份和日期,例如我试过:tt, = np.where([(d.month == i+1 for d in dates) & (d.day == j+1 for d in dates)])
    • 啊,问题解决了,感谢您让我走上正轨!这有效: tt, = np.where([(d.month == i+1) & (d.day == j+1) for d in dates])
    猜你喜欢
    • 1970-01-01
    • 2021-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-24
    • 2017-04-05
    • 2019-11-23
    • 2016-07-05
    相关资源
    最近更新 更多