如何在python中合并多个数组?

Mar*_*dan 3 python arrays numpy

我想阅读多个文件的内容,单独处理它们的数据(因为性能和硬件资源),并将我的结果写入一个"大"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)
    
    Run Code Online (Sandbox Code Playgroud)

    我的数据将被一个新数组包围.

仅供参考:我使用的是Ubuntu 14.04和Python:3.5(Anaconda)

Leo*_*iro 14

现在你可以用 python 3 做这样的事情:

tst1 = [1, 2, 3]
tst2 = [4, 5, 6]

ts3 = [*tst1, *tst2]
Run Code Online (Sandbox Code Playgroud)

结果:[1, 2, 3, 4, 5, 6]


J.J*_*J.J 6

当你这样做

allDays=[]
allDays.append(day1)
allDays.append(day2)
Run Code Online (Sandbox Code Playgroud)

您正在列出指向现有数据的指针,而不是重新打包数据.你可以这样做:

allDays=[]
allDays.append(day1[:])
allDays.append(day2[:])
Run Code Online (Sandbox Code Playgroud)

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

说了这么多,如果你使用Pandas(通常推荐用于时间序列数据)或Numpy,这整个事情会更快,并且使用更少的内存.Numpy数组不能保存像python列表那样的指针,所以隐含了副本.希望为你清除一些东西:)我也强烈推荐这个视频由Ned