我想读取多个文件的内容,分别处理它们的数据(由于性能和硬件资源),然后将结果写入一个“大” netCDF4文件中。

现在,我能够读取文件,处理它们的数据,但是我很难处理生成的多个数组。我无法正确合并它们。

我有一个3d数组(时间,长,纬度),其中包含我每天的计算值。我想做的是将我拥有的所有阵列合并到一个大阵列中,然后再将其写入netCDF4文件。 (整天排列在一起)

这里是两个示例数组:

  • day1 [19790101] [-25] [35] = 95
  • day2 [19790102] [-15] [25] = 93

  • 我的预期结果是:
  • allDays [19790101] [-25] [35] = 95
  • allDays [19790102] [-15] [25] = 93

  • 我怎样才能达到这种结构?
  • 当我使用:allDays=day1+day2时,我的数据将被汇总。
  • 当我使用时:
    allDays=[]
    allDays.append(day1)
    allDays.append(day2)
    

    我的数据将被新数组包围。

  • 仅供引用:我正在使用Ubuntu 14.04和Python:3.5(Anaconda)

    最佳答案

    当你做

    allDays=[]
    allDays.append(day1)
    allDays.append(day2)
    

    您是在创建指向现有数据的指针的列表,而不是重新打包数据。您可以这样做:
    allDays=[]
    allDays.append(day1[:])
    allDays.append(day2[:])
    

    现在,它将数据从第1天复制到新的allDays数组中。这将使您的内存使用量增加一倍,因此最好在每次添加allDay之后发出del day1

    话虽如此,如果您使用Pandas(通常建议用于时间序列数据)或Numpy,则整个过程会更快,并且占用的内存也更少。 numpy数组无法像python列表一样容纳指针,因此暗含了该副本。希望能为您解决一些问题:)我也强烈推荐内德(Ned)的this video

    10-05 20:50
    查看更多