0
Une légère modification sur ma dernière question python-xarray copy mask from one DataArray to anothercopie python-xarray nan d'un DataArray à un autre
Quand je lis dans un autre fichier Hs il capte le valid_min attribut: 0 et donc le fichier est lu avec nan de automatiquement
f = xr.open_dataset('ww3.Hs.mask.nc')
<xarray.DataArray 'hs' (time: 1, latitude: 81, longitude: 131)>
array([[[ nan, nan, ..., nan, nan],
[ nan, nan, ..., nan, nan],
...,
[ nan, 0. , ..., 0.422, nan],
[ nan, nan, ..., nan, nan]]])
Coordinates:
* latitude (latitude) float32 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 ...
* longitude (longitude) float32 -100.0 -99.0 -98.0 -97.0 -96.0 -95.0 ...
* time (time) datetime64[ns] 1983-01-30
Attributes:
long_name: significant height of wind and swell waves
standard_name: sea_surface_wave_significant_height
globwave_name: significant_wave_height
units: m
valid_min: 0
valid_max: 32000
Je me demande maintenant comment choisir ce masque pour une autre variable. Mes suppositions de la syntaxe sont:
ws10_masked = ws10.where(hs == nan)
NameError: name 'nan' is not defined
ws10_masked = ws10.where(hs.isnull)
# Does not give an error message but does not set any values in ws10 to nan
ws10_masked = ws10.where(hs.isnull())
Traceback (most recent call last):
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-
packages/xarray/backends/netCDF4_.py", line 60, in __getitem__
data = getitem(self.get_array(), key)
File "netCDF4/_netCDF4.pyx", line 3730, in
netCDF4._netCDF4.Variable.__getitem__ (netCDF4/_netCDF4.c:39703)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-
packages/netCDF4/utils.py", line 391, in _out_array_shape
c = count[..., i].ravel()[0] # All elements should be identical.
IndexError: index 0 is out of bounds for axis 0 with size 0
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "paper_test.py", line 62, in <module>
ws10_masked = ws10.where(hs.isnull())
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/core/common.py", line 637, in where
out = outobj._where(outcond)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-
packages/xarray/core/dataarray.py", line 1541, in func
if not reflexive
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/core/ops.py", line 191, in func
return getattr(self, name)(*args, **kwargs)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/core/variable.py", line 873, in where
return self._where(cond)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/core/variable.py", line 1141, in func
self_data, other_data, dims = _broadcast_compat_data(self, other)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/core/variable.py", line 1376, in _broadcast_compat_data
self_data = new_self.data
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/core/variable.py", line 267, in data
return self.values
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/core/variable.py", line 308, in values
return _as_array_or_item(self._data)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/core/variable.py", line 184, in _as_array_or_item
data = np.asarray(data)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/numpy/core/numeric.py", line 531, in asarray
return array(a, dtype, copy=False, order=order)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/core/indexing.py", line 419, in __array__
self._ensure_cached()
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/core/indexing.py", line 416, in _ensure_cached
self.array = np.asarray(self.array)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/numpy/core/numeric.py", line 531, in asarray
return array(a, dtype, copy=False, order=order)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/core/indexing.py", line 400, in __array__
return np.asarray(self.array, dtype=dtype)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/numpy/core/numeric.py", line 531, in asarray
return array(a, dtype, copy=False, order=order)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/core/indexing.py", line 375, in __array__
return np.asarray(array[self.key], dtype=None)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/conventions.py", line 363, in __getitem__
self.scale_factor, self.add_offset, self._dtype)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/conventions.py", line 59, in mask_and_scale
values = np.array(array, dtype=dtype, copy=True)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/core/indexing.py", line 375, in __array__
return np.asarray(array[self.key], dtype=None)
File "/nethome/rxb826/PYTHON3/myenv/lib/python3.6/site-packages/xarray/backends/netCDF4_.py", line 71, in __getitem__
raise IndexError(msg)
IndexError: The indexing operation you are attempting to perform is not valid on netCDF4.Variable object. Try loading your data into memory first by calling .load().
Cheers, Ray
Vous avez une erreur complexe et ajouté au dessus. Peut être lié à la version 3.6 de python que j'utilise. Heureux d'élaborer –
Pouvez-vous s'il vous plaît ouvrir un problème sur la page GitHub de xarray? Un lien vers des fichiers que nous pourrions utiliser pour le reproduire serait également utile. – shoyer