【问题标题】:Printing one variable from a netCDF file using Python使用 Python 从 netCDF 文件中打印一个变量
【发布时间】:2013-07-23 15:59:15
【问题描述】:

我正在尝试从 netCDF 文件中获取一个变量并打印它。这是我的代码

import netCDF4
import netCDF4_utils
from netCDF4 import Dataset
from numpy.random import uniform
import csv

B = []
rootgrp = Dataset('test.cdf', 'r', format = 'NETCDF4')
f = open('testoutput.csv','wb')

b = (rootgrp.variables['grid_optical_depth'][:])
for x in b:
        B.append(x)
f.write(str(B))
rootgrp.close()
f.close()

当我运行它时,我得到了一组似乎在重复的非常大的数据,但我看不到我的 for 循环是如何做到的,它不应该只运行一次数据集吗? 也有人能谈谈为什么数据以每行四组的形式打印出来吗?如果我运行print rootgrp.variables['grid_optical_depth'] 我会得到

<type 'netCDF4.Variable'>
float32 grid_optical_depth(grid_time, range)
    long_name: Grid_Aerosol_Optical_Depth_Profile
    units: (n/a)
    temporal_average: 20.0
unlimited dimensions:
current shape = (1440, 399)

这是否意味着其中两个数字对应于 grid_time 和 rage 值?我认为情况并非如此,因为所有数字都比 1 小得多(大约为 10^-3 和 -4)。

感谢任何帮助

【问题讨论】:

  • 从 [stackoverflow.com/questions/16641437/… 添加编辑 b = (rootgrp.variables['grid_optical_depth'][:,:]) 得到了与之前相同的答案
  • 能否将 a 和 b 重命名为您期望的名称?
  • 我已经删除了 A,B 应该只是气溶胶光学部门的值列表。我将这些附加到 B 因为我不能将(rootgrp.variables['grid_optical_depth'][:]) 直接写入文件
  • 他的观点是,调试读起来像英语的代码要容易得多,而不是使用单字母变量和大写来表示某种含义的代码。

标签: python file-io multiple-columns python-2.x netcdf


【解决方案1】:

我使用另一个文件测试了您的代码,它给出了预期的结果:将变量从 netCDF 文件打印到 csv 文件。它不会两次打印变量,也许这是您文件的一个特征。

您的grid_optical_depth 变量的形状为(1440, 399),第一个索引对应维度grid_time,第二个索引对应维度range。当您执行循环for x in b: 时,您将附加变量的每一列(最多 1440),每列将有 399 行。

此外,您实际上并不需要循环。如果你设置 numpy 的打印选项来显示完整的数组,你可以直接把整个数组打印成一个字符串,像这样:

import numpy as np
import netCDF4
rootgrp = netCDF4.Dataset('test.cdf', 'r', format='NETCDF4')
f = open('testoutput.csv','wb')

np.set_printoptions(threshold='nan')
f.write(str(rootgrp.variables['grid_optical_depth'][:]))
f.close()
rootgrp.close()

如果您只想将 netCDF 变量写入文本格式,那么我强烈认为您熟悉 ncdump 程序。

【讨论】:

    猜你喜欢
    • 2016-02-15
    • 1970-01-01
    • 2022-01-18
    • 2020-06-11
    • 2020-11-30
    • 2016-07-12
    • 2021-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多