31
31
if TYPE_CHECKING :
32
32
from ._dataset import Dataset
33
33
import xarray
34
+ from numpy .typing import ArrayLike
34
35
35
36
36
37
from ..spatial import (
@@ -174,7 +175,7 @@ class DataArray:
174
175
175
176
def __init__ (
176
177
self ,
177
- data : np . ndarray ,
178
+ data : ArrayLike ,
178
179
* ,
179
180
time : pd .DatetimeIndex | str | None = None ,
180
181
name : str | None = None ,
@@ -186,8 +187,7 @@ def __init__(
186
187
dims : Sequence [str ] | None = None ,
187
188
dt : float = 1.0 ,
188
189
) -> None :
189
- # TODO: add optional validation validate=True
190
- self ._values = self ._parse_data (data )
190
+ self ._values = np .asarray (data )
191
191
self .time : pd .DatetimeIndex = self ._parse_time (time )
192
192
self ._dt = dt
193
193
@@ -202,15 +202,6 @@ def __init__(
202
202
self ._set_spectral_attributes (geometry )
203
203
self .plot = self ._get_plotter_by_geometry ()
204
204
205
- @staticmethod
206
- def _parse_data (data : Any ) -> Any : # np.ndarray | float:
207
- if not hasattr (data , "shape" ):
208
- try :
209
- data = np .array (data , dtype = float )
210
- except ValueError :
211
- raise ValueError ("Data must be convertible to a numpy array" )
212
- return data
213
-
214
205
def _parse_dims (
215
206
self , dims : Sequence [str ] | None , geometry : GeometryType
216
207
) -> tuple [str , ...]:
@@ -1581,7 +1572,7 @@ def nanmin(self, axis: int | str = 0, **kwargs: Any) -> "DataArray":
1581
1572
"""
1582
1573
return self .aggregate (axis = axis , func = np .nanmin , ** kwargs )
1583
1574
1584
- def nanmean (self , axis : int | str = 0 , ** kwargs : Any ) -> "DataArray" :
1575
+ def nanmean (self , axis : int | str | None = 0 , ** kwargs : Any ) -> "DataArray" :
1585
1576
"""Mean value along an axis (NaN removed).
1586
1577
1587
1578
Parameters
@@ -1626,7 +1617,10 @@ def nanstd(self, axis: int | str = 0, **kwargs: Any) -> "DataArray":
1626
1617
return self .aggregate (axis = axis , func = np .nanstd , ** kwargs )
1627
1618
1628
1619
def aggregate (
1629
- self , axis : int | str = 0 , func : Callable [..., Any ] = np .nanmean , ** kwargs : Any
1620
+ self ,
1621
+ axis : int | str | None = 0 ,
1622
+ func : Callable [..., Any ] = np .nanmean ,
1623
+ ** kwargs : Any ,
1630
1624
) -> "DataArray" :
1631
1625
"""Aggregate along an axis.
1632
1626
@@ -2088,7 +2082,6 @@ def _time_by_agg_axis(
2088
2082
2089
2083
return time
2090
2084
2091
-
2092
2085
@staticmethod
2093
2086
def _is_boolean_mask (x : Any ) -> bool :
2094
2087
if hasattr (x , "dtype" ): # isinstance(x, (np.ndarray, DataArray)):
0 commit comments