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.valuesreturns numpy array. behavior consistent pandas.dataset.values()returns list (python 2) or valuesview (python 3) of dataarray objects constitute dataset. behavior consistentdatasetsatisfying python'smappinginterface.
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