i can't figure out how pull data out of xr.dataset
object. can't figure out how access individual values. how can pull values (point values, vectors, arrays, etc.) out of datasets can dataarrays?
np.random.seed(0) da_data = xr.dataarray(np.random.random((3,2,10,100)), dims=["targets","accuracy","metrics","attributes"], name="data") da_data.coords["attributes"] = ["attr_%d"%_ _ in range(100)] # da_data.coords # coordinates: # * targets (targets) int64 0 1 2 # * accuracy (accuracy) int64 0 1 # * metrics (metrics) int64 0 1 2 3 4 5 6 7 8 9 # * attributes (attributes) int64 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... # indexing dataarray #da_data.sel(targets=0, accuracy=0, metrics=0, attributes="attr_5").values #array(0.6458941130666561) float(da_data.sel(targets=0, accuracy=0, metrics=0, attributes="attr_5").values) #0.6458941130666561 # indexing dataset ds_data = da_data.to_dataset() # ds_data # <xarray.dataset> # dimensions: (accuracy: 2, attributes: 100, metrics: 10, targets: 3) # coordinates: # * targets (targets) int64 0 1 2 # * accuracy (accuracy) int64 0 1 # * metrics (metrics) int64 0 1 2 3 4 5 6 7 8 9 # * attributes (attributes) <u7 'attr_0' 'attr_1' 'attr_2' 'attr_3' ... # data variables: # data (targets, accuracy, metrics, attributes) float64 0.5488 ... ds_data.sel(targets=0, accuracy=0, metrics=0, attributes="attr_5").values # <bound method mapping.values of <xarray.dataset> # dimensions: () # coordinates: # targets int64 0 # accuracy int64 0 # metrics int64 0 # attributes <u7 'attr_5' # data variables: # data float64 0.6459> float(ds_data.sel(targets=0, accuracy=0, metrics=0, attributes="attr_5").values) # --------------------------------------------------------------------------- # typeerror traceback (most recent call last) # <ipython-input-408-e0c88e8541d8> in <module>() # 38 # data variables: # 39 # data float64 0.6459> # ---> 40 float(ds_data.sel(targets=0, accuracy=0, metrics=0, attributes="attr_5").values) # typeerror: float() argument must string or number, not 'method'
it's little confusing, .values
works differently on dataset
, dataarray
:
dataarray.values
returns numpy array. behavior consistent pandas.dataset.values()
returns list (python 2) or valuesview (python 3) of dataarray objects constitute dataset. behavior consistentdataset
satisfying python'smapping
interface.
to pull values out of dataset
, need pull out dataarray
via dataset's dictionary-like interface, e.g., float(da_data['data'])
or float(da_data.values()[0])
. can't directly convert dataset
float or numpy array, no more python dict.
Comments
Post a Comment