@@ -111,14 +111,35 @@ def __init__(
111
111
def from_numpy (
112
112
data : Sequence [NDArray [np .floating ]],
113
113
time : pd .DatetimeIndex | None = None ,
114
- items : Sequence [ItemInfo ] | None = None ,
114
+ items : Sequence [ItemInfo ] | Sequence [ str ] | None = None ,
115
115
* ,
116
116
geometry : Any | None = None ,
117
117
zn : NDArray [np .floating ] | None = None ,
118
118
dims : tuple [str , ...] | None = None ,
119
119
validate : bool = True ,
120
120
dt : float = 1.0 ,
121
121
) -> Dataset :
122
+ """Create a Dataset from numpy arrays.
123
+
124
+ Parameters
125
+ ----------
126
+ data: Sequence[NDArray[np.floating]]
127
+ Data to be converted to DataArrays
128
+ time: pd.DatetimeIndex, optional
129
+ Time axis, by default None
130
+ items: Sequence[ItemInfo], optional
131
+ ItemInfo for each DataArray, by default None
132
+ geometry: Any, optional
133
+ Geometry of the DataArrays, by default None
134
+ zn: NDArray[np.floating], optional
135
+ Z-coordinates of the DataArrays, by default None
136
+ dims: tuple[str, ...], optional
137
+ Named dimensions of the DataArrays, by default None
138
+ validate: bool, optional
139
+ Validate the DataArrays, by default True
140
+ dt: float, optional
141
+ Dummy time step in seconds, by default 1.0
142
+ """
122
143
item_infos = Dataset ._parse_items (items , len (data ))
123
144
124
145
data_vars = {
@@ -157,7 +178,7 @@ def _modify_list(lst: Iterable[str]) -> list[str]:
157
178
158
179
@staticmethod
159
180
def _parse_items (
160
- items : None | Sequence [ItemInfo ], n_items_data : int
181
+ items : None | Sequence [ItemInfo | str ], n_items_data : int
161
182
) -> list [ItemInfo ]:
162
183
if items is None :
163
184
item_infos = [ItemInfo (f"Item_{ j + 1 } " ) for j in range (n_items_data )]
@@ -167,7 +188,13 @@ def _parse_items(
167
188
f"Number of items ({ len (items )} ) must match len of data ({ n_items_data } )"
168
189
)
169
190
170
- item_infos = list (items )
191
+ item_infos = []
192
+ for item in items :
193
+ if isinstance (item , str ):
194
+ item = ItemInfo (item )
195
+ elif not isinstance (item , ItemInfo ):
196
+ raise TypeError (f"items of type: { type (item )} is not supported" )
197
+ item_infos .append (item )
171
198
172
199
item_names = [it .name for it in item_infos ]
173
200
item_names = Dataset ._modify_list (item_names )
0 commit comments