【问题标题】:Creating and Storing Multi-Dimensional Array in a netCDF File在 netCDF 文件中创建和存储多维数组
【发布时间】:2015-08-19 17:53:56
【问题描述】:

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

第一:

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

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

我想创建一个具有以下维度(海拔、纬度、时间、变量)的数组

换句话说,我希望能够指定我访问四个列表中的哪一个,列表中的哪个索引,并指定特定的时间和纬度。所以这个数组的索引应该是这样的:

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

我不会包含这部分的代码,因为实际上唯一提到的就是列表

list1=[...]

list2=[...]

list3=[...]

list4=[...]

我该怎么做,是否有更简单的数组结构,或者我还缺少什么?

第二:

我创建了一个带有这四个维度变量的 netCDF 文件。我需要将这些变量设置为上面制作的数组结构。我不知道如何做到这一点,netCDF4 文档以一种相当神秘的方式做了一个一维数组。如果可以将数组直接放入 netCDF 文件中,而无需首先使用 numpy,请务必告诉我如何操作。

谢谢!

【问题讨论】:

    标签: python arrays numpy multidimensional-array netcdf


    【解决方案1】:

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

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

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

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

    array1[:,0,0,0]=list1

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

    接下来要将数组写入 netCDF 文件,我在创建数组的同一程序中创建了一个 netCDF,创建了一个变量并为其赋予如下值:

    netcdfvariable[:]=array1

    希望对发现此问题的人有所帮助。

    【讨论】:

      猜你喜欢
      • 2012-05-21
      • 2018-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多