home / github / issue_comments

Menu
  • GraphQL API
  • Search all tables

issue_comments: 791379121

This data as json

html_url issue_url id node_id user created_at updated_at author_association body reactions performed_via_github_app issue
https://github.com/pydata/xarray/issues/1772#issuecomment-791379121 https://api.github.com/repos/pydata/xarray/issues/1772 791379121 MDEyOklzc3VlQ29tbWVudDc5MTM3OTEyMQ== 1119116 2021-03-05T12:08:17Z 2021-03-05T12:09:32Z NONE

A possible code for this functionality could be: def nonzero4xarray (da:xarray.DataArray): c = da.where(da, drop=True).coords s = da.sel(c).to_series() s = s[s] o = [] for record in s.index: o.append(dict(list(zip(s.index.names, record)))) return o however the output is sub-optimal, as it yields a list of dicts, each with the corresponding coordinate to the nonzero value.

Consider the following example: ```

import numpy as np import xarray as xr x = np.arange(5) * 100 y = np.arange(4) * 100 z = np.arange(3) * 10 da = xr.DataArray(np.random.randn(z.size, y.size, x.size), dims=('z', 'y', 'x'), coords={'x': x, 'y': y, 'z': z}) da.loc[da.isel({'x':[0, 2], 'y':[1,3], 'z':[0]}).coords] = np.nan da.loc[da.isel({'x':[1, 3], 'y':[0], 'z':[-1]}).coords] = np.nan and imagine I want to capture the locations with NaN values. If I do: coords = da.where(da.isnull(), drop=True).coords da.sel(coords) array([[[ 1.586261, -0.2003 , 0.734872, -1.198746], [ nan, -0.108265, nan, 0.754857], [ nan, 0.700742, nan, -1.514642]],

   [[ 1.109573,       nan, -1.596756,       nan],
    [ 0.031771, -0.341263,  1.358767,  0.221174],
    [-0.671605,  0.923703,  0.085335, -1.672686]]])

``` I will get the coordinates for a mix of NaN and valid values, depending on how these are distributed.

If I want to obtain only the NaN locations: ```

coords = nonzero4xarray(da.isnull()) coords [{'z': 0, 'y': 100, 'x': 0}, {'z': 0, 'y': 100, 'x': 200}, {'z': 0, 'y': 300, 'x': 0}, {'z': 0, 'y': 300, 'x': 200}, {'z': 20, 'y': 0, 'x': 100}, {'z': 20, 'y': 0, 'x': 300}] vals = [da.sel(c).values[()] for c in coords] vals [nan, nan, nan, nan, nan, nan] `` whose functionality is similar tonumpy.nonzero, although sub-optimal as we cannot issueda.sel(coords)` directly.

{
    "total_count": 0,
    "+1": 0,
    "-1": 0,
    "laugh": 0,
    "hooray": 0,
    "confused": 0,
    "heart": 0,
    "rocket": 0,
    "eyes": 0
}
  280875330
Powered by Datasette · Queries took 0.739ms · About: xarray-datasette