데이터 관측치 (수레)가 3 차원으로 큰 배열을 생성하는 코드를 작성했습니다. 크기는 (33,000 x 2016 x 53)이며 (# obs.locations x 5min_intervals_perweek x weeks_in_leapyear)에 해당합니다. 매우 희박합니다 (항목의 약 1.5 %가 채워짐).Large Sparse Numpy Array를 절약 (평균)
현재 나는 호출하여이 작업을 수행합니다
my3Darray = np.zeros(33000,2016,53)
또는
my3Darray = np.empty(33000,2016,53)
내 루프 후 시간과 수레와 업데이트 1.5 %를에 배열 한 항목에 인덱스 (이 부분은 실제로 매우입니다 빠른). 그때 필요에 :
- 저장 각 차원 (X 2016 33000)를 CSV 또는 다른 '일반 형식의 데이터 파일
- 그래서 나는 33000 X 2016 얻어야한다 (3 차원에 걸쳐 평균을 가지고 같은 조각 매트릭스)
내가 함께 저장 시도 :
for slice_2d_week_i in xrange(nweeks):
weekfile = str(slice_2d_week_i)
np.savetxt(weekfile, my3Darray[:,:,slice_2d_week_i], delimiter=",")
그러나,이 매우 느리고 출력에 빈 항목이
,536,913,632로 표시 100.000000000000000000e+00
파일 크기가 커집니다.
더 효율적인 방법으로 저장할 수 있습니까 (결코 업데이트되지 않은 항목에 공백이 남을 수 있습니까?) np.zeros 또는 np.empty 외에도 배열을 할당하는 더 좋은 방법이 있습니까? 그리고 업데이트되지 않은 항목 (mean (my3Darray, 3)이 0 항목을 무시하지 않음)을 무시하면서 3 차원에서 평균을 취하는 방법은 무엇입니까?
다음은'scipy.sparse' 형식 중 하나를 사용하는 것이 좋습니다. –