2014-06-14 4 views
0

나는 30 년 동안 매일 날짜가 배열되어 있습니다. 나는이 배열을 월 및 일로 np.where을 사용하여 필터링하려고 노력하고 있으므로 각 연도의 해당 데이터 항목의 평균을 찾을 수 있습니다. 내가 datetime 항목을 조회 할 numpywhere 기능을 사용할 수있는 방법이 있나요Python numpy where datetime이있는 함수

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

을 : 내가 할 때

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

내가 제대로 데이터를 조회 할 수 있습니다

그러나, 나는 오류 ?

내가 지금까지 가지고있는 코드는 다음과 같습니다 dates 이후

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 

답변

1

목록, 그것의 요소 datetime 유형 경우에도 datetime로 사용할 수 없습니다. 그래서 그 대신

dates.month == i 

의이보고에 대한

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

감사합니다 뭔가를해야합니다. 나는 시도했다 : \t tt, = np.where ([d.month == i + 1, d는 날짜로]), 그리고 이것은 월간 정상적으로 작동하지만 월과 일을 모두 필터링 할 수는 없다. , 예. 나는 시도했다 : tt, = np.where ([날짜 (d.month == i + 1, 날짜 d)] & (d.day == j + 1 날짜 d)]) – Jasper

+1

아, 문제 해결, 감사합니다. 그것으로 바른 길에 나를 두는 것! 이것은 작동합니다 : tt, = np.where ([(d.month == i + 1) & d (d.day == j + 1) d의 날짜]]) – Jasper