将 xarray 变量转换为用于 svd 计算的 dask 数组

Convert an xarray variable to a dask array for svd computation

提问人:Nihilum 提问时间:7/7/2023 更新时间:7/7/2023 访问量:27

问:

我有一个分块数据集,它有一个又高又瘦的变量。 我想计算它的 SVD,但据我所知,xarray 不会在块上这样做。块很重要,否则 SVD 计算会使我的 RAM 过载。

有没有办法将数据集的变量(分块)转换为一个以应用?dask.array.Arraydask.array.linalg.svd()

如果我在 dask svd 函数中输入我的数据集,我会收到错误:dsAttributeError: 'DataArray' object has no attribute 'numblocks'

生成数据集的示例代码:

import xarray as xr
import numpy as np
import dask.array as da

time = np.arange(200)
space = np.arange(700000)

data = np.random.rand(200, 700000)  # Generating random data

# Create the xarray dataset
ds = xr.Dataset(
    {"variable": (("time", "space"), data)},
    coords={"time": time, "space": space},
).chunk({'time':-1, 'space':100000})
python dask python-xarray svd

评论


答: 暂无答案