def guess_initial_types(X, initial_types): """ Guesses initial types from an array or a dataframe. @param X array or dataframe @param initial_types hints about X @return data types """ if X is None and initial_types is None: raise NotImplementedError( # pragma: no cover "Initial types must be specified.") elif initial_types is None: if isinstance(X, (numpy.ndarray, pandas.DataFrame)): X = X[:1] if isinstance(X, pandas.DataFrame): initial_types = [] for c in X.columns: if isinstance(X[c].values[0], (str, numpy.str_)): g = StringTensorType() else: g = _guess_type(X[c].values) g.shape = [None, 1] initial_types.append((c, g)) else: gt = _guess_type(X) initial_types = [('X', gt)] return initial_types