0
votes

The xarray is two dimensional (storm*time) with coordinates time, lat, and lon. I am trying to get the corresponding coordinates values of the first repeated value in xarray.

In other words, In the xarray there are nan values and repeated values of b'TD'. I want to get the time, lat, and lon values of the first b'TD' in each storm.

Here is the output of a xarray.

<xarray.DataArray 'usa_status' (storm: 17, date_time: 36)> array([[nan, nan, b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, b'TD', b'TD', b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', nan, nan, nan, nan, b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD'], [b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [b'TD', b'TD', b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, b'TD', b'TD', b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, b'TD', nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, b'TD', b'TD', b'TD', b'TD', b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan], [nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, b'TD', b'TD', b'TD', b'TD', nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]], dtype=object) Coordinates: time (storm, date_time) datetime64[ns] 2017-07-05T12:00:00.000039936 ... 2019-09-26T03:00:00.000039936 lat (storm, date_time) float32 11.8 11.880182 12.0 ... 14.5 14.634828 lon (storm, date_time) float32 -35.9 -36.475014 ... -37.6 -38.230053 Dimensions without coordinates: storm, date_time Attributes: long_name: Storm status description: DB - disturbance, TD - tropical depression, TS... coverage_content_type: thematicClassification

1

1 Answers

0
votes

Difficult to know without an example of how your data looks, however, the following may work:

import xarray as xr
import numpy as np
data = np.array(
    [[np.NaN, "AB", "AB"], [np.NaN, np.NaN, "AB"], ["AB", np.NaN, np.NaN]],
    dtype=object
)
da = xr.DataArray(data)
(da == "AB").argmax(dim="dim_1")

da looks as follows:

<xarray.DataArray (dim_0: 3, dim_1: 3)>
array([[nan, 'AB', 'AB'],
       [nan, nan, 'AB'],
       ['AB', nan, nan]], dtype=object)
Dimensions without coordinates: dim_0, dim_1