def _asarray_tuplesafe(values, dtype=None): if not isinstance(values, (list, tuple, np.ndarray)): values = list(values) if isinstance(values, list) and dtype in [np.object_, object]: return lib.list_to_object_array(values) result = np.asarray(values, dtype=dtype) if issubclass(result.dtype.type, basestring): result = np.asarray(values, dtype=object) if result.ndim == 2: if isinstance(values, list): return lib.list_to_object_array(values) else: # give it our best shot result = np.empty(len(values), dtype=object) result[:] = values return result
def _asarray_tuplesafe(values, dtype=None): if not isinstance(values, (list, tuple, np.ndarray)): values = list(values) if isinstance(values, list) and dtype in [np.object_, object]: return lib.list_to_object_array(values) result = np.asarray(values, dtype=dtype) if issubclass(result.dtype.type, basestring): result = np.asarray(values, dtype=object) if result.ndim == 2: if isinstance(values, list): return lib.list_to_object_array(values) else: # Making a 1D array that safely contains tuples is a bit tricky # in numpy, leading to the following result = np.empty(len(values), dtype=object) result[:] = values return result
def unique1d(values): """ Hash table-based unique """ if np.issubdtype(values.dtype, np.floating): table = lib.Float64HashTable(len(values)) uniques = np.array(table.unique(com._ensure_float64(values)), dtype=np.float64) elif np.issubdtype(values.dtype, np.integer): table = lib.Int64HashTable(len(values)) uniques = np.array(table.unique(com._ensure_int64(values)), dtype=np.int64) if values.dtype == np.datetime64: uniques = uniques.view("M8[us]") else: table = lib.PyObjectHashTable(len(values)) uniques = table.unique(com._ensure_object(values)) uniques = lib.list_to_object_array(uniques) return uniques
def unique1d(values): """ Hash table-based unique """ if issubclass(values.dtype.type, np.floating): if values.dtype != np.float64: values = values.astype(np.float64) table = lib.Float64HashTable(len(values)) uniques = np.array(table.unique(values), dtype=np.float64) elif issubclass(values.dtype.type, np.integer): if values.dtype != np.int64: values = values.astype(np.int64) table = lib.Int64HashTable(len(values)) uniques = np.array(table.unique(values), dtype=np.int64) else: if not values.dtype == np.object_: values = values.astype(np.object_) table = lib.PyObjectHashTable(len(values)) uniques = lib.list_to_object_array(table.unique(values)) return uniques
def _zip2(*args): return lib.list_to_object_array(zip(*args))