Как удалить строки с логической маской в ​​xarray/dask без взрыва памяти с помощью .compute()?Python

Программы на Python
Ответить
Anonymous
 Как удалить строки с логической маской в ​​xarray/dask без взрыва памяти с помощью .compute()?

Сообщение Anonymous »

Я пытаюсь создать подмножество большого набора данных xarray.Dataset, поддерживаемого Dask, и сохранить его обратно в Zarr, но у меня возникает серьезная проблема с памятью при попытке удалить строки с помощью логической маски.
Вот минимальный рабочий пример, который соответствует моей реальной настройке:

Код: Выделить всё

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

# Simulate a large dataset
pos_len = 100_000_000   # rows
sample_len = 100       # samples
chunks = (100_000, 100)

data = da.random.random((pos_len, sample_len), chunks=chunks)
xds = xr.Dataset(
{"some_var": (("pos", "sample_id"), data)},
coords={"pos": np.arange(pos_len), "sample_id": np.arange(sample_len)}
)

# Build a boolean mask based on mean coverage
coverage_array = "some_var"
min_coverage = 0.5
mask_1d = xds[coverage_array].mean(dim="sample_id", skipna=True) >= min_coverage

# Attempt to drop rows where mask is False
cds_masked = xds.where(mask_1d.compute(), other=np.nan, drop=True)  # 

Подробнее здесь: [url]https://stackoverflow.com/questions/79792858/how-to-drop-rows-with-a-boolean-mask-in-xarray-dask-without-compute-blowing-u[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»