【问题标题】:Selecting the All Coordinate values using xarray使用 xarray 选择所有坐标值
【发布时间】:2022-01-13 01:59:29
【问题描述】:

我正在使用 xarray 从 netcdf 文件中读取数据。

我正在将任何给定数据变量的数据导出为 CSV 格式。

这是一个示例数据变量

stratiform_snowfall_rate    (time, grid_latitude, grid_longitude) float32
Dimensions  = ('time', 'grid_latitude', 'grid_longitude')
No.of Dimensions  = 3
DataType    = float32
Shape       = (36, 548, 421)

我可以从 DataArray 中获取各个值。

但是,我希望每个坐标都有一组唯一的值。

即我想要我拥有 snowfall_rate 数据的所有纬度经度和时间值。

应该有 36 个唯一时间值、548 个纬度值和 421 个经度值。

谢谢 萨提什

【问题讨论】:

  • 嗨 Machael,如果有多个变量,不确定 to_csv() 将如何存储。我希望每个变量都存储在单独的 csv 文件中,并且当我尝试将其保存为 csv 时,我收到 Memory Error:numpy.core._exceptions.MemoryError: Unable to allocate 19.8 PiB for an array with shape (36, 548 , 421, 3, 3, 3, 2, 2, 3, 3, 421, 547, 3) 和数据类型 float32。
  • 您能否在问题中完整描述您要解决的问题?请注意,您可以遍历ds.data_vars 中的变量并执行ds[v].to_series().to_frame(name=v).to_csv()。也就是说,是的,csv 不是存储高维数据的好格式,最好将数据保留为 netcdf。
  • 请注意,to_dataframe() 在一个数据集中存储多个变量,但数据集中的所有数组将首先相互广播,然后堆叠。所以这不适用于具有非均匀维度的数组。这可能会导致您看到的数组分配错误的大小爆炸。
  • Michael,我正在尝试获取给定数据变量的唯一坐标集。因为我试图将给定数据变量的数据连同坐标一起存储在它自己的 csv/parquet 文件中,并最终存储在一个 db 表中。

标签: python-xarray


【解决方案1】:

谢谢大家。我可以读取坐标值。

这是一个示例:

dataArray = xr.DataArray(
    np.random.randn(4, 6),
    dims=("x", "y"),
    coords={
        "x": [-3.2, 2.1, 5.3, 6.5],
        "y": pd.date_range("2009-01-05", periods=6, freq="M"),
    },
)

for i in range(len(dataArray.x)):
    for j in range(len(dataArray.y)):
        rowDict = {}
        rowDict['x'] = dataArray.coords['x'].values[i]
        rowDict['y'] = pd.to_datetime(str(dataArray.coords['y'].values[j])).strftime('%Y.%m.%d %H.%M.%S')
        rowDict['val'] = dataArray.data[i, j]
        print(rowDict)

我得到的输出是:

{'x': -3.2, 'y': '2009.01.31 00.00.00', 'val': 1.1672918170123077}
{'x': -3.2, 'y': '2009.02.28 00.00.00', 'val': -0.45000573967001745}
{'x': -3.2, 'y': '2009.03.31 00.00.00', 'val': -0.3070507637309568}
{'x': -3.2, 'y': '2009.04.30 00.00.00', 'val': -0.16715901864646582}
{'x': -3.2, 'y': '2009.05.31 00.00.00', 'val': 1.6700002681882784}
{'x': -3.2, 'y': '2009.06.30 00.00.00', 'val': 0.2303405222447574}
{'x': 2.1, 'y': '2009.01.31 00.00.00', 'val': -0.10394183859025365}
{'x': 2.1, 'y': '2009.02.28 00.00.00', 'val': -0.6399654408544677}
{'x': 2.1, 'y': '2009.03.31 00.00.00', 'val': -0.7322155474326156}
{'x': 2.1, 'y': '2009.04.30 00.00.00', 'val': 0.4443732649765692}
{'x': 2.1, 'y': '2009.05.31 00.00.00', 'val': 0.32141177764826817}
{'x': 2.1, 'y': '2009.06.30 00.00.00', 'val': 0.990286185910961}
{'x': 5.3, 'y': '2009.01.31 00.00.00', 'val': -1.0176437927897097}
{'x': 5.3, 'y': '2009.02.28 00.00.00', 'val': -0.23011079013897445}
{'x': 5.3, 'y': '2009.03.31 00.00.00', 'val': -0.17623947662095518}
{'x': 5.3, 'y': '2009.04.30 00.00.00', 'val': -1.567830106123095}
{'x': 5.3, 'y': '2009.05.31 00.00.00', 'val': 0.3510704631729717}
{'x': 5.3, 'y': '2009.06.30 00.00.00', 'val': -1.619554124545969}
{'x': 6.5, 'y': '2009.01.31 00.00.00', 'val': -0.7614693432763142}
{'x': 6.5, 'y': '2009.02.28 00.00.00', 'val': 1.1021880682514598}
{'x': 6.5, 'y': '2009.03.31 00.00.00', 'val': -0.9944031641204935}
{'x': 6.5, 'y': '2009.04.30 00.00.00', 'val': 0.4910807257668136}
{'x': 6.5, 'y': '2009.05.31 00.00.00', 'val': 1.5922216407449592}
{'x': 6.5, 'y': '2009.06.30 00.00.00', 'val': -0.41559207408354637}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-04
    • 2017-09-25
    • 2022-12-07
    • 2019-03-04
    • 2017-03-25
    相关资源
    最近更新 更多