【发布时间】:2015-07-28 10:28:06
【问题描述】:
我有一个有 4 个维度的变量,我想将其中的 3 个设置为固定值,所以只有一个在变化(即我可以获得变量的 2D 图形表示) - 但是我找不到方法用 scipy 和 numpy 做到这一点。我不愿意安装 NetCDF4(我只是工作经验 - 我上周学习了 python,所以我对此很陌生)。
谢谢!
【问题讨论】:
我有一个有 4 个维度的变量,我想将其中的 3 个设置为固定值,所以只有一个在变化(即我可以获得变量的 2D 图形表示) - 但是我找不到方法用 scipy 和 numpy 做到这一点。我不愿意安装 NetCDF4(我只是工作经验 - 我上周学习了 python,所以我对此很陌生)。
谢谢!
【问题讨论】:
NetCDF4 允许您将一维指定为变量,以便它可以方便地组织数据文件布局。您只能将数据添加到文件的末尾。任何其他更改都需要重写文件,或者至少需要重写大部分文件。此外,许多 NetCDF4 数据具有自然的“增长”维度,例如空间固定样本点,但会随着时间的推移而增长。
numpy 数组没有这样的选项,通常不需要它。如果需要向数组中添加数据,请使用concatenate 创建一个新数组,该数组同时包含旧数据和新数据。或者更确切地说,它连接了所有元素,没有“旧”与“新”的区别。 np.concatenate 已编译,因此速度相当快。我相信它的作用是创建正确大小的新空数组,并从输入中复制数据。
有一个np.append,但它实际上只是concatenate 的前端。一次性添加到数组中没问题,但新用户经常误用它,将其放入循环中,将项一个一个地添加到数组中。
构造数组的常见numpy 习惯用法是将片段附加到列表中,然后将该列表传递给最后的np.array。 Python list 有一个高效的 append 方法。这样的列表也可以传递给np.concatenate。
另一种常见的做法是初始化一个足够大的空数组,然后沿适当的维度插入子数组。
增量创建数组是一个常见的 SO numpy 问题。
【讨论】: