【发布时间】: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