在netCDF文件中创建和存储多维数组

时间:2015-06-04 22:35:49

标签: python arrays numpy multidimensional-array netcdf

这个问题可能有两部分,但如果第一部分可以被第二部分封装,则可能只有一部分。我正在使用python与numpy和netCDF4

首先:

我有四个不同变量值的列表(以下称为高程值),每个变量值的长度为28.这四个列表是一组5个不同的纬度值,其中一组是24个不同的时间值。

所以24次......每次有5个纬度...每个纬度有4个列表......每个列表有28个值。

我想创建一个具有以下尺寸的数组(高程,纬度,时间,变量)

总之,我希望能够指定我访问的四个列表中的哪一个,列表中的哪个索引,并指定特定的时间和纬度。所以这个数组的索引如下所示:

array(0,1,2,3)其中0指定由3指定的第4个列表的第一个索引.1指定第2个纬度,2指定第3个时间,输出是该点的值

我不会在这部分中包含我的代码,因为从字面上看,唯一提到的是列表

list1的= [...]

list2中= [...]

项目list3 = [...]

list4 = [...]

我怎么能这样做,是否有一个更简单的阵列结构,还是我还缺少其他什么?

第二

我创建了一个包含这四个维度的变量的netCDF文件。我需要将这些变量设置为上面的数组结构。我不知道如何做到这一点,netCDF4文档以一种相当神秘的方式执行一维数组。如果数组可以直接进入netCDF文件,绕过首先使用numpy的需要,通过各种方式告诉我如何。

谢谢!

1 个答案:

答案 0 :(得分:0)

在与我工作的几个人交谈后,我们提出了这个解决方案:

首先,我们使用以下参数创建了一个零数组:

ARRAY1 = np.zeros((28,5,24,4))

然后通过指定我们想要更改的数组中的位置来附加此数组:

ARRAY1 [:,0,0,0] = list1的

这会将列表的值插入到数组的第一个条目中。

接下来将数组写入netCDF文件,我在创建数组的同一程序中创建了一个netCDF,创建了一个变量并给它这样的值:

netcdfvariable [:] = ARRAY1

希望能帮到找到这个的人。