def _as_numpy(*args):
"""Given an iterable (a 1d list, np.ndarray, pd.Series,
pd.DataFrame or H2OFrame), convert it into a 1d np.ndarray
for further processing.
Returns
-------
arrs : list
Returns a list (of 1d np.ndarrays) of length==len(args)
"""
def _single_as_numpy(x):
if not isinstance(x, np.ndarray):
# if an H2OFrame, just return the first col
if isinstance(x, H2OFrame):
# same as ..h2o.util.h2o_col_to_numpy, but
# that causes circular dependency in imports.
if not x.shape[1] == 1:
raise ValueError('must be 1d column')
_1d = x[x.columns[0]].as_data_frame(use_pandas=True)
return _1d[_1d.columns[0]].values
elif is_iterable(x):
return np.asarray(x)
else:
raise TypeError('cannot create numpy array out of type=%s' % type(x))
else:
return np.copy(x)
arrs = [_single_as_numpy(i) for i in args]
if len(arrs) == 1:
arrs = arrs[0]
return arrs
评论列表
文章目录