Python scipy.sparse.issparse() Examples
The following are 30
code examples of scipy.sparse.issparse().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
scipy.sparse
, or try the search function
.
Example #1
Source File: nb_sklearn.py From recordlinkage with BSD 3-Clause "New" or "Revised" License | 6 votes |
def safe_sparse_dot(a, b, dense_output=False): """Dot product that handle the sparse matrix case correctly Uses BLAS GEMM as replacement for numpy.dot where possible to avoid unnecessary copies. Parameters ---------- a : array or sparse matrix b : array or sparse matrix dense_output : boolean, default False When False, either ``a`` or ``b`` being sparse will yield sparse output. When True, output will always be an array. Returns ------- dot_product : array or sparse matrix sparse if ``a`` or ``b`` is sparse and ``dense_output=False``. """ if issparse(a) or issparse(b): ret = a * b if dense_output and hasattr(ret, "toarray"): ret = ret.toarray() return ret else: return np.dot(a, b)
Example #2
Source File: core.py From neuropythy with GNU Affero General Public License v3.0 | 6 votes |
def cplus(*args): ''' cplus(a, b...) returns the sum of all the values as a numpy array object. Like numpy's add function or a+b syntax, plus will thread over the latest dimension possible. Additionally, cplus works correctly with sparse arrays. ''' n = len(args) if n == 0: return np.asarray(0) elif n == 1: return np.asarray(args[0]) elif n > 2: return reduce(plus, args) (a,b) = args if sps.issparse(a): if not sps.issparse(b): b = np.asarray(b) if len(b.shape) == 0: b = np.reshape(b, (1,1)) elif sps.issparse(b): a = np.asarray(a) if len(a.shape) == 0: a = np.reshape(a, (1,1)) else: a = np.asarray(a) b = np.asarray(b) return a + b
Example #3
Source File: label_model.py From metal with Apache License 2.0 | 6 votes |
def _create_L_ind(self, L): """Convert a label matrix with labels in 0...k to a one-hot format Args: L: An [n,m] scipy.sparse label matrix with values in {0,1,...,k} Returns: L_ind: An [n,m*k] dense np.ndarray with values in {0,1} Note that no column is required for 0 (abstain) labels. """ # TODO: Update LabelModel to keep L variants as sparse matrices # throughout and remove this line. if issparse(L): L = L.todense() L_ind = np.zeros((self.n, self.m * self.k)) for y in range(1, self.k + 1): # A[x::y] slices A starting at x at intervals of y # e.g., np.arange(9)[0::3] == np.array([0,3,6]) L_ind[:, (y - 1) :: self.k] = np.where(L == y, 1, 0) return L_ind
Example #4
Source File: common.py From lambda-packs with MIT License | 6 votes |
def right_multiply(J, d, copy=True): """Compute J diag(d). If `copy` is False, `J` is modified in place (unless being LinearOperator). """ if copy and not isinstance(J, LinearOperator): J = J.copy() if issparse(J): J.data *= d.take(J.indices, mode='clip') # scikit-learn recipe. elif isinstance(J, LinearOperator): J = right_multiplied_operator(J, d) else: J *= d return J
Example #5
Source File: classifier.py From metal with Apache License 2.0 | 6 votes |
def _to_numpy(Z): """Converts a None, list, np.ndarray, or torch.Tensor to np.ndarray; also handles converting sparse input to dense.""" if Z is None: return Z elif issparse(Z): return Z.toarray() elif isinstance(Z, np.ndarray): return Z elif isinstance(Z, list): return np.array(Z) elif isinstance(Z, torch.Tensor): return Z.cpu().numpy() else: msg = ( f"Expected None, list, numpy.ndarray or torch.Tensor, " f"got {type(Z)} instead." ) raise Exception(msg)
Example #6
Source File: classifier.py From metal with Apache License 2.0 | 6 votes |
def _to_torch(Z, dtype=None): """Converts a None, list, np.ndarray, or torch.Tensor to torch.Tensor; also handles converting sparse input to dense.""" if Z is None: return None elif issparse(Z): Z = torch.from_numpy(Z.toarray()) elif isinstance(Z, torch.Tensor): pass elif isinstance(Z, list): Z = torch.from_numpy(np.array(Z)) elif isinstance(Z, np.ndarray): Z = torch.from_numpy(Z) else: msg = ( f"Expected list, numpy.ndarray or torch.Tensor, " f"got {type(Z)} instead." ) raise Exception(msg) return Z.type(dtype) if dtype else Z
Example #7
Source File: utils.py From metal with Apache License 2.0 | 6 votes |
def __init__(self, X, Y): # Need to convert sparse matrices to dense here # TODO: Need to handle sparse matrices better overall; maybe not use # Datasets for them...? if issparse(X[0]): X = [Xt.toarray() for Xt in X] # Check and set data objects self.X = X self.Y = Y self.t = len(Y) self.n = len(X[0]) assert np.all([len(X_t) == self.n for X_t in X]) assert np.all([len(Y_t) == self.n for Y_t in Y])
Example #8
Source File: core.py From neuropythy with GNU Affero General Public License v3.0 | 6 votes |
def inner(a,b): ''' inner(a,b) yields the dot product of a and b, doing so in a fashion that respects sparse matrices when encountered. This does not error check for bad dimensionality. If a or b are constants, then the result is just the a*b; if a and b are both vectors or both matrices, then the inner product is dot(a,b); if a is a vector and b is a matrix, this is equivalent to as if a were a matrix with 1 row; and if a is a matrix and b a vector, this is equivalent to as if b were a matrix with 1 column. ''' if sps.issparse(a): return a.dot(b) else: a = np.asarray(a) if len(a.shape) == 0: return a*b if sps.issparse(b): if len(a.shape) == 1: return b.T.dot(a) else: return b.T.dot(a.T).T else: b = np.asarray(b) if len(b.shape) == 0: return a*b if len(a.shape) == 1 and len(b.shape) == 2: return np.dot(b.T, a) else: return np.dot(a,b)
Example #9
Source File: core.py From neuropythy with GNU Affero General Public License v3.0 | 6 votes |
def arcsine(x, null=(-np.inf, np.inf)): ''' arcsine(x) is equivalent to asin(x) except that it also works on sparse arrays. The optional argument null (default, (-numpy.inf, numpy.inf)) may be specified to indicate what value(s) should be assigned when x < -1 or x > 1. If only one number is given, then it is used for both values; otherwise the first value corresponds to <-1 and the second to >1. If null is None, then an error is raised when invalid values are encountered. ''' if sps.issparse(x): x = x.copy() x.data = arcsine(x.data, null=null, rtol=rtol, atol=atol) return x else: x = np.asarray(x) try: (nln,nlp) = null except Exception: (nln,nlp) = (null,null) ii = None if nln is None else np.where(x < -1) jj = None if nlp is None else np.where(x > 1) if ii: x[ii] = 0 if jj: x[jj] = 0 x = np.arcsin(x) if ii: x[ii] = nln if jj: x[jj] = nlp return x
Example #10
Source File: data_io.py From Kaggler with MIT License | 6 votes |
def save_hdf5(X, y, path): """Save data as a HDF5 file. Args: X (numpy or scipy sparse matrix): Data matrix y (numpy array): Target vector. path (str): Path to the HDF5 file to save data. """ with h5py.File(path, 'w') as f: is_sparse = 1 if sparse.issparse(X) else 0 f['issparse'] = is_sparse f['target'] = y if is_sparse: if not sparse.isspmatrix_csr(X): X = X.tocsr() f['shape'] = np.array(X.shape) f['data'] = X.data f['indices'] = X.indices f['indptr'] = X.indptr else: f['data'] = X
Example #11
Source File: matrixtools.py From pyGSTi with Apache License 2.0 | 6 votes |
def safeimag(A, inplace=False, check=False): """ Returns the imaginary-part of `A` correctly when `A` is either a dense array or a sparse matrix """ if check: assert(safenorm(A, 'real') < 1e-6), "Check failed: taking imag-part of matrix w/nonzero real part" if _sps.issparse(A): if _sps.isspmatrix_csr(A): if inplace: ret = _sps.csr_matrix((_np.imag(A.data), A.indices, A.indptr), shape=A.shape, dtype='d') else: # copy ret = _sps.csr_matrix((_np.imag(A.data).copy(), A.indices.copy(), A.indptr.copy()), shape=A.shape, dtype='d') ret.eliminate_zeros() return ret else: raise NotImplementedError("safereal() doesn't work with %s matrices yet" % str(type(A))) else: return _np.imag(A)
Example #12
Source File: core.py From neuropythy with GNU Affero General Public License v3.0 | 6 votes |
def arccosine(x, null=(-np.inf, np.inf)): ''' arccosine(x) is equivalent to acos(x) except that it also works on sparse arrays. The optional argument null (default, (-numpy.inf, numpy.inf)) may be specified to indicate what value(s) should be assigned when x < -1 or x > 1. If only one number is given, then it is used for both values; otherwise the first value corresponds to <-1 and the second to >1. If null is None, then an error is raised when invalid values are encountered. ''' if sps.issparse(x): x = x.toarray() else: x = np.asarray(x) try: (nln,nlp) = null except Exception: (nln,nlp) = (null,null) ii = None if nln is None else np.where(x < -1) jj = None if nlp is None else np.where(x > 1) if ii: x[ii] = 0 if jj: x[jj] = 0 x = np.arccos(x) if ii: x[ii] = nln if jj: x[jj] = nlp return x
Example #13
Source File: phate.py From PHATE with GNU General Public License v2.0 | 6 votes |
def diff_op(self): """The diffusion operator calculated from the data """ if self.graph is not None: if isinstance(self.graph, graphtools.graphs.LandmarkGraph): diff_op = self.graph.landmark_op else: diff_op = self.graph.diff_op if sparse.issparse(diff_op): diff_op = diff_op.toarray() return diff_op else: raise NotFittedError( "This PHATE instance is not fitted yet. Call " "'fit' with appropriate arguments before " "using this method." )
Example #14
Source File: matrixtools.py From pyGSTi with Apache License 2.0 | 6 votes |
def safereal(A, inplace=False, check=False): """ Returns the real-part of `A` correctly when `A` is either a dense array or a sparse matrix """ if check: assert(safenorm(A, 'imag') < 1e-6), "Check failed: taking real-part of matrix w/nonzero imaginary part" if _sps.issparse(A): if _sps.isspmatrix_csr(A): if inplace: ret = _sps.csr_matrix((_np.real(A.data), A.indices, A.indptr), shape=A.shape, dtype='d') else: # copy ret = _sps.csr_matrix((_np.real(A.data).copy(), A.indices.copy(), A.indptr.copy()), shape=A.shape, dtype='d') ret.eliminate_zeros() return ret else: raise NotImplementedError("safereal() doesn't work with %s matrices yet" % str(type(A))) else: return _np.real(A)
Example #15
Source File: utils.py From contextualbandits with BSD 2-Clause "Simplified" License | 6 votes |
def get_batch(self, X, y): if self.curr == 0: self.add_obs(X, y) return X, y if (self.curr < self.n) and (isinstance(self.X_reserve, list)): if not self.has_sparse: old_X = np.concatenate(self.X_reserve, axis=0) else: old_X = sp_vstack(self.X_reserve) old_y = np.concatenate(self.y_reserve, axis=0) else: old_X = self.X_reserve[:self.curr].copy() old_y = self.y_reserve[:self.curr].copy() if X.shape[0] == 0: return old_X, old_y else: self.add_obs(X, y) if not issparse(old_X) and not issparse(X): return np.r_[old_X, X], np.r_[old_y, y] else: return sp_vstack([old_X, X]), np.r_[old_y, y]
Example #16
Source File: basis.py From pyGSTi with Apache License 2.0 | 6 votes |
def _lazy_build_vector_elements(self): if self.sparse: compMxs = [] else: compMxs = _np.zeros((self.size, self.dim), 'complex') i, start = 0, 0 for compbasis in self.component_bases: for lbl, vel in zip(compbasis.labels, compbasis.vector_elements): assert(_sps.issparse(vel) == self.sparse), "Inconsistent sparsity!" if self.sparse: mx = _sps.lil_matrix((self.dim, 1)) mx[start:start + compbasis.dim, 0] = vel compMxs.append(mx) else: compMxs[i, start:start + compbasis.dim] = vel i += 1 start += compbasis.dim assert(i == self.size) self._vector_elements = compMxs
Example #17
Source File: core.py From neuropythy with GNU Affero General Public License v3.0 | 6 votes |
def fapply(f, x, tz=False): ''' fapply(f,x) yields the result of applying f either to x, if x is a normal value or array, or to x.data if x is a sparse matrix. Does not modify x (unless f modifiex x). The optional argument tz (default: False) may be set to True to specify that, if x is a sparse matrix that contains at least 1 element that is a sparse-zero, then f(0) should replace all the sparse-zeros in x (unless f(0) == 0). ''' if sps.issparse(x): y = x.copy() y.data = f(x.data) if tz and y.getnnz() < np.prod(y.shape): z = f(np.array(0)) if z != 0: y = y.toarray() y[y == 0] = z return y else: return f(x)
Example #18
Source File: CategoryProjector.py From scattertext with Apache License 2.0 | 5 votes |
def normalize(self, weighted_category_counts): if self.normalizer_ is not None: normalized_vals = self.normalizer_.fit_transform(weighted_category_counts) if issparse(normalized_vals): return normalized_vals if not isinstance(normalized_vals, DataFrame): return DataFrame(data=normalized_vals, columns=weighted_category_counts.columns, index=weighted_category_counts.index) else: return normalized_vals return weighted_category_counts
Example #19
Source File: CategoryProjector.py From scattertext with Apache License 2.0 | 5 votes |
def get_category_embeddings(self, category_corpus): raw_category_counts = self._get_raw_category_counts(category_corpus) weighted_counts = self.weight(raw_category_counts) normalized_counts = self.normalize(weighted_counts) if type(normalized_counts) is not pd.DataFrame: normalized_counts = pd.DataFrame(normalized_counts.todense() if scipy.sparse.issparse(normalized_counts) else normalized_counts, columns=raw_category_counts.columns, index=raw_category_counts.index) return normalized_counts
Example #20
Source File: homotopy.py From celer with BSD 3-Clause "New" or "Revised" License | 5 votes |
def _sparse_and_dense(X): if sparse.issparse(X): X_dense = np.empty([1, 1], order='F', dtype=X.data.dtype) X_data = X.data X_indptr = X.indptr X_indices = X.indices else: X_dense = X X_data = np.empty([1], dtype=X.dtype) X_indices = np.empty([1], dtype=np.int32) X_indptr = np.empty([1], dtype=np.int32) return X_dense, X_data, X_indices, X_indptr
Example #21
Source File: graph.py From link-prediction_with_deep-learning with MIT License | 5 votes |
def from_numpy(x, undirected=True): G = Graph() if issparse(x): cx = x.tocoo() for i,j,v in zip(cx.row, cx.col, cx.data): G[i].append(j) else: raise Exception("Dense matrices not yet supported.") if undirected: G.make_undirected() G.make_consistent() return G
Example #22
Source File: graph.py From link-prediction_with_deep-learning with MIT License | 5 votes |
def from_numpy(x, undirected=True): G = Graph() if issparse(x): cx = x.tocoo() for i,j,v in zip(cx.row, cx.col, cx.data): G[i].append(j) else: raise Exception("Dense matrices not yet supported.") if undirected: G.make_undirected() G.make_consistent() return G
Example #23
Source File: matrixtools.py From pyGSTi with Apache License 2.0 | 5 votes |
def safenorm(A, part=None): """ Returns the frobenius norm of a matrix or vector, `A` when it is either a dense array or a sparse matrix. Parameters ---------- A : ndarray or sparse matrix The matrix or vector to take the norm of. part : {None,'real','imag'} If not None, return the norm of the real or imaginary part of `A`. Returns ------- float """ if part == 'real': takepart = _np.real elif part == 'imag': takepart = _np.imag else: takepart = lambda x: x if _sps.issparse(A): assert(_sps.isspmatrix_csr(A)), "Non-CSR sparse formats not implemented" return _np.linalg.norm(takepart(A.data)) else: return _np.linalg.norm(takepart(A)) # could also use _spsl.norm(A)
Example #24
Source File: analysis.py From metal with Apache License 2.0 | 5 votes |
def view_label_matrix(L, colorbar=True): """Display an [n, m] matrix of labels""" L = L.todense() if sparse.issparse(L) else L plt.imshow(L, aspect="auto") plt.title("Label Matrix") if colorbar: labels = sorted(np.unique(np.asarray(L).reshape(-1, 1).squeeze())) boundaries = np.array(labels + [max(labels) + 1]) - 0.5 plt.colorbar(boundaries=boundaries, ticks=labels) plt.show()
Example #25
Source File: analysis.py From metal with Apache License 2.0 | 5 votes |
def view_overlaps(L, self_overlaps=False, normalize=True, colorbar=True): """Display an [m, m] matrix of overlaps""" L = L.todense() if sparse.issparse(L) else L G = _get_overlaps_matrix(L, normalize=normalize) if not self_overlaps: np.fill_diagonal(G, 0) # Zero out self-overlaps plt.imshow(G, aspect="auto") plt.title("Overlaps") if colorbar: plt.colorbar() plt.show()
Example #26
Source File: analysis.py From metal with Apache License 2.0 | 5 votes |
def view_conflicts(L, normalize=True, colorbar=True): """Display an [m, m] matrix of conflicts""" L = L.todense() if sparse.issparse(L) else L C = _get_conflicts_matrix(L, normalize=normalize) plt.imshow(C, aspect="auto") plt.title("Conflicts") if colorbar: plt.colorbar() plt.show()
Example #27
Source File: least_squares.py From lambda-packs with MIT License | 5 votes |
def check_jac_sparsity(jac_sparsity, m, n): if jac_sparsity is None: return None if not issparse(jac_sparsity): jac_sparsity = np.atleast_2d(jac_sparsity) if jac_sparsity.shape != (m, n): raise ValueError("`jac_sparsity` has wrong shape.") return jac_sparsity, group_columns(jac_sparsity) # Loss functions.
Example #28
Source File: matrixtools.py From pyGSTi with Apache License 2.0 | 5 votes |
def safedot(A, B): """ Performs dot(A,B) correctly when neither, either, or both arguments are sparse matrices """ if _sps.issparse(A): return A.dot(B) # sparseMx.dot works for both sparse and dense args elif _sps.issparse(B): # to return a sparse mx even when A is dense (asymmetric behavior): # --> return _sps.csr_matrix(A).dot(B) # numpyMx.dot can't handle sparse argument return _np.dot(A, B.toarray()) else: return _np.dot(A, B)
Example #29
Source File: common.py From lambda-packs with MIT License | 5 votes |
def compute_jac_scale(J, scale_inv_old=None): """Compute variables scale based on the Jacobian matrix.""" if issparse(J): scale_inv = np.asarray(J.power(2).sum(axis=0)).ravel()**0.5 else: scale_inv = np.sum(J**2, axis=0)**0.5 if scale_inv_old is None: scale_inv[scale_inv == 0] = 1 else: scale_inv = np.maximum(scale_inv, scale_inv_old) return 1 / scale_inv, scale_inv
Example #30
Source File: core.py From neuropythy with GNU Affero General Public License v3.0 | 5 votes |
def finto(x, ii, n, null=0): ''' finto(x,ii,n) yields a vector u of length n such that u[ii] = x. Notes: * The ii index may be a tuple (as can be passed to numpy arrays' getitem method) in order to specify that the specific elements of a multidimensional output be set. In this case, the argument n should be a tuple of sizes (a single integer is taken to be a square/cube/etc). * x may be a sparse-array, but in it will be reified by this function. The following optional arguments are allowed: * null (defaut: 0) specifies the value that should appear in the elements of u that are not set. ''' x = x.toarray() if sps.issparse(x) else np.asarray(x) shx = x.shape if isinstance(ii, tuple): if not pimms.is_vector(n): n = tuple([n for _ in ii]) if len(n) != len(ii): raise ValueError('%d-dim index but %d-dim output' % (len(ii),len(n))) sh = n + shx[1:] elif pimms.is_int(ii): sh = (n,) + shx else: sh = (n,) + shx[1:] u = np.zeros(sh, dtype=x.dtype) if null == 0 else np.full(sh, null, dtype=x.dtype) u[ii] = x return u # Potential Functions ##############################################################################