Python scipy.sparse.diags() Examples
The following are 30
code examples of scipy.sparse.diags().
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: data_helper.py From LanczosNetwork with MIT License | 7 votes |
def normalize_adj(A, is_sym=True, exponent=0.5): """ Normalize adjacency matrix is_sym=True: D^{-1/2} A D^{-1/2} is_sym=False: D^{-1} A """ rowsum = np.array(A.sum(1)) if is_sym: r_inv = np.power(rowsum, -exponent).flatten() else: r_inv = np.power(rowsum, -1.0).flatten() r_inv[np.isinf(r_inv)] = 0. if sp.isspmatrix(A): r_mat_inv = sp.diags(r_inv.squeeze()) else: r_mat_inv = np.diag(r_inv) if is_sym: return r_mat_inv.dot(A).dot(r_mat_inv) else: return r_mat_inv.dot(A)
Example #2
Source File: codegen_matrices_test.py From osqp-python with Apache License 2.0 | 6 votes |
def setUp(self): # Simple QP problem self.P = sparse.diags([11., 0.1], format='csc') self.P_new = sparse.eye(2, format='csc') self.q = np.array([3, 4]) self.A = sparse.csc_matrix([[-1, 0], [0, -1], [-1, -3], [2, 5], [3, 4]]) self.A_new = sparse.csc_matrix([[-1, 0], [0, -1], [-2, -2], [2, 5], [3, 4]]) self.u = np.array([0, 0, -15, 100, 80]) self.l = -np.inf * np.ones(len(self.u)) self.n = self.P.shape[0] self.m = self.A.shape[0] self.opts = {'verbose': False, 'eps_abs': 1e-08, 'eps_rel': 1e-08, 'alpha': 1.6, 'max_iter': 3000, 'warm_start': True} self.model = osqp.OSQP() self.model.setup(P=self.P, q=self.q, A=self.A, l=self.l, u=self.u, **self.opts)
Example #3
Source File: unconstrained_test.py From osqp-python with Apache License 2.0 | 6 votes |
def setUp(self): """ Setup unconstrained quadratic problem """ # Unconstrained QP problem sp.random.seed(4) self.n = 30 self.m = 0 P = sparse.diags(np.random.rand(self.n)) + 0.2*sparse.eye(self.n) self.P = P.tocsc() self.q = np.random.randn(self.n) self.A = sparse.csc_matrix((self.m, self.n)) self.l = np.array([]) self.u = np.array([]) self.opts = {'verbose': False, 'eps_abs': 1e-08, 'eps_rel': 1e-08, 'polish': False} self.model = osqp.OSQP() self.model.setup(P=self.P, q=self.q, A=self.A, l=self.l, u=self.u, **self.opts)
Example #4
Source File: diff.py From findiff with MIT License | 6 votes |
def matrix(self, shape, *args, **kwargs): """ Matrix representation of given operator product on an equidistant grid of given shape. :param shape: tuple with the shape of the grid :return: scipy sparse matrix representing the operator product """ if isinstance(self.left, np.ndarray): left = sparse.diags(self.left.reshape(-1), 0) elif isinstance(self.left, LinearMap) or isinstance(self.left, BinaryOperator): left = self.left.matrix(shape, *args, **kwargs) else: left = self.left * sparse.diags(np.ones(shape).reshape(-1), 0) if isinstance(self.right, np.ndarray): right = sparse.diags(self.right.reshape(-1), 0) elif isinstance(self.right, LinearMap) or isinstance(self.right, BinaryOperator): right = self.right.matrix(shape, *args, **kwargs) else: right = self.right * sparse.diags(np.ones(shape).reshape(-1), 0) return left.dot(right)
Example #5
Source File: prone.py From nodevectors with MIT License | 6 votes |
def pre_factorization(G, n_components, exponent): """ Network Embedding as Sparse Matrix Factorization """ C1 = preprocessing.normalize(G, "l1") # Prepare negative samples neg = np.array(C1.sum(axis=0))[0] ** exponent neg = neg / neg.sum() neg = sparse.diags(neg, format="csr") neg = G.dot(neg) # Set negative elements to 1 -> 0 when log C1.data[C1.data <= 0] = 1 neg.data[neg.data <= 0] = 1 C1.data = np.log(C1.data) neg.data = np.log(neg.data) C1 -= neg features_matrix = ProNE.tsvd_rand(C1, n_components=n_components) return features_matrix
Example #6
Source File: polishing_test.py From osqp-python with Apache License 2.0 | 6 votes |
def test_polish_simple(self): # Simple QP problem self.P = sparse.diags([11., 0.], format='csc') self.q = np.array([3, 4]) self.A = sparse.csc_matrix([[-1, 0], [0, -1], [-1, -3], [2, 5], [3, 4]]) self.u = np.array([0, 0, -15, 100, 80]) self.l = -np.inf * np.ones(len(self.u)) self.n = self.P.shape[0] self.m = self.A.shape[0] self.model = osqp.OSQP() self.model.setup(P=self.P, q=self.q, A=self.A, l=self.l, u=self.u, **self.opts) # Solve problem res = self.model.solve() # Assert close nptest.assert_array_almost_equal(res.x, np.array([0., 5.])) nptest.assert_array_almost_equal(res.y, np.array([1.66666667, 0., 1.33333333, 0., 0.])) nptest.assert_array_almost_equal(res.info.obj_val, 20.)
Example #7
Source File: dual_infeasibility_test.py From osqp-python with Apache License 2.0 | 6 votes |
def test_dual_infeasible_qp(self): # Dual infeasible example self.P = sparse.diags([4., 0.], format='csc') self.q = np.array([0, 2]) self.A = sparse.csc_matrix([[1., 1.], [-1., 1.]]) self.l = np.array([-np.inf, -np.inf]) self.u = np.array([2., 3.]) self.model = osqp.OSQP() self.model.setup(P=self.P, q=self.q, A=self.A, l=self.l, u=self.u, **self.opts) # Solve problem with OSQP res = self.model.solve() # Assert close self.assertEqual(res.info.status_val, constant('OSQP_DUAL_INFEASIBLE'))
Example #8
Source File: codegen_vectors_test.py From osqp-python with Apache License 2.0 | 6 votes |
def setUp(self): # Simple QP problem self.P = sparse.diags([11., 0.], format='csc') self.q = np.array([3, 4]) self.A = sparse.csc_matrix([[-1, 0], [0, -1], [-1, -3], [2, 5], [3, 4]]) self.u = np.array([0, 0, -15, 100, 80]) self.l = -np.inf * np.ones(len(self.u)) self.n = self.P.shape[0] self.m = self.A.shape[0] self.opts = {'verbose': False, 'eps_abs': 1e-08, 'eps_rel': 1e-08, 'rho': 0.01, 'alpha': 1.6, 'max_iter': 10000, 'warm_start': True} self.model = osqp.OSQP() self.model.setup(P=self.P, q=self.q, A=self.A, l=self.l, u=self.u, **self.opts)
Example #9
Source File: DCCComputation.py From DCC with MIT License | 6 votes |
def compute_lambda(pairs, Z, lmdb, lmdb_data): numsamples = len(Z) R = csr_matrix((lmdb * pairs[:,2], (pairs[:,0].astype(int), pairs[:,1].astype(int))), shape=(numsamples, numsamples)) R = R + R.transpose() D = diags(np.squeeze(np.array(np.sum(R,1))), 0) I = diags(lmdb_data, 0) spndata = np.linalg.norm(I * Z, ord=2) eiglmdbdata,_ = sparse.linalg.eigsh(I, k=1) eigM,_ = sparse.linalg.eigsh(D - R, k=1) _lambda = float(spndata / (eiglmdbdata + eigM)) return _lambda
Example #10
Source File: preprocessing.py From IGMC with MIT License | 6 votes |
def normalize_features(feat): degree = np.asarray(feat.sum(1)).flatten() # set zeros to inf to avoid dividing by zero degree[degree == 0.] = np.inf degree_inv = 1. / degree degree_inv_mat = sp.diags([degree_inv], [0]) feat_norm = degree_inv_mat.dot(feat) if feat_norm.nnz == 0: print('ERROR: normalized adjacency matrix has only zero entries!!!!!') exit return feat_norm
Example #11
Source File: sdne.py From GraphEmbedding with MIT License | 6 votes |
def _create_A_L(self, graph, node2idx): node_size = graph.number_of_nodes() A_data = [] A_row_index = [] A_col_index = [] for edge in graph.edges(): v1, v2 = edge edge_weight = graph[v1][v2].get('weight', 1) A_data.append(edge_weight) A_row_index.append(node2idx[v1]) A_col_index.append(node2idx[v2]) A = sp.csr_matrix((A_data, (A_row_index, A_col_index)), shape=(node_size, node_size)) A_ = sp.csr_matrix((A_data + A_data, (A_row_index + A_col_index, A_col_index + A_row_index)), shape=(node_size, node_size)) D = sp.diags(A_.sum(axis=1).flatten().tolist()[0]) L = D - A_ return A, L
Example #12
Source File: convolution.py From spektral with MIT License | 6 votes |
def degree_power(A, k): r""" Computes \(\D^{k}\) from the given adjacency matrix. Useful for computing normalised Laplacian. :param A: rank 2 array or sparse matrix. :param k: exponent to which elevate the degree matrix. :return: if A is a dense array, a dense array; if A is sparse, a sparse matrix in DIA format. """ degrees = np.power(np.array(A.sum(1)), k).flatten() degrees[np.isinf(degrees)] = 0. if sp.issparse(A): D = sp.diags(degrees) else: D = np.diag(degrees) return D
Example #13
Source File: BGC_model.py From GCMC with MIT License | 5 votes |
def gen_sym_graph(self, A_ori): A = (A_ori + A_ori.transpose()) / 2.0 # changed to float64 A = sp.csr_matrix(A, dtype='float32') A.setdiag(1.0) # A_tilde = A + I_n D = 1.0 / np.sqrt(np.array(A.sum(axis=1)).reshape(-1,)) D_inv_one_half = sp.diags(D, offsets=0) return D_inv_one_half.dot(A).dot(D_inv_one_half)
Example #14
Source File: utils.py From AttentionWalk with GNU General Public License v3.0 | 5 votes |
def feature_calculator(args, graph): """ Calculating the feature tensor. :param args: Arguments object. :param graph: NetworkX graph. :return target_matrices: Target tensor. """ index_1 = [edge[0] for edge in graph.edges()] + [edge[1] for edge in graph.edges()] index_2 = [edge[1] for edge in graph.edges()] + [edge[0] for edge in graph.edges()] values = [1 for edge in index_1] node_count = max(max(index_1)+1, max(index_2)+1) adjacency_matrix = sparse.coo_matrix((values, (index_1, index_2)), shape=(node_count, node_count), dtype=np.float32) degrees = adjacency_matrix.sum(axis=0)[0].tolist() degs = sparse.diags(degrees, [0]) normalized_adjacency_matrix = degs.dot(adjacency_matrix) target_matrices = [normalized_adjacency_matrix.todense()] powered_A = normalized_adjacency_matrix if args.window_size > 1: for power in tqdm(range(args.window_size-1), desc="Adjacency matrix powers"): powered_A = powered_A.dot(normalized_adjacency_matrix) to_add = powered_A.todense() target_matrices.append(to_add) target_matrices = np.array(target_matrices) return target_matrices
Example #15
Source File: utils.py From DeepRobust with MIT License | 5 votes |
def normalize_feature(mx): """Row-normalize sparse matrix Parameters ---------- mx : scipy.sparse.csr_matrix matrix to be normalized Returns ------- scipy.sprase.lil_matrix normalized matrix """ if type(mx) is not sp.lil.lil_matrix: mx = mx.tolil() rowsum = np.array(mx.sum(1)) r_inv = np.power(rowsum, -1).flatten() r_inv[np.isinf(r_inv)] = 0. r_mat_inv = sp.diags(r_inv) mx = r_mat_inv.dot(mx) return mx
Example #16
Source File: diff.py From findiff with MIT License | 5 votes |
def matrix(self, shape, *args, **kwargs): left, right = self.left, self.right if isinstance(self.left, Operator): left = self.left.matrix(shape, *args, **kwargs) elif isinstance(self.left, np.ndarray): left = sparse.diags(self.left.reshape(-1), 0) if isinstance(self.right, Operator): right = self.right.matrix(shape, *args, **kwargs) elif isinstance(self.right, np.ndarray): right = sparse.diags(self.right.reshape(-1), 0) return left + right
Example #17
Source File: utils.py From zero-shot-gcn with MIT License | 5 votes |
def preprocess_features_dense2(features): rowsum = np.array(features.sum(1)) r_inv = np.power(rowsum, -1).flatten() r_inv[np.isinf(r_inv)] = 0. r_mat_inv = sp.diags(r_inv) features = r_mat_inv.dot(features) div_mat = sp.diags(rowsum) return features, div_mat
Example #18
Source File: utils.py From zero-shot-gcn with MIT License | 5 votes |
def normalize_adj(adj): """Symmetrically normalize adjacency matrix.""" adj = sp.coo_matrix(adj) rowsum = np.array(adj.sum(1)) d_inv_sqrt = np.power(rowsum, -0.5).flatten() d_inv_sqrt[np.isinf(d_inv_sqrt)] = 0. d_mat_inv_sqrt = sp.diags(d_inv_sqrt) return adj.dot(d_mat_inv_sqrt).transpose().dot(d_mat_inv_sqrt).tocoo()
Example #19
Source File: pico_robot.py From robotreviewer with GNU General Public License v3.0 | 5 votes |
def transform(self, doc_text, extra_features=None, idf=None): # first hashing vectorizer calculates integer token counts # (note that this uses a signed hash; negative indices are # are stored as a flipped (negated) value in the positive # index. This works fine so long as the model files use the # same rule (to balance out the negatives). sentences = [sent.text for sent in doc_text.sents] X_text = self.vectorizer.transform(sentences) X_rowsums = diags(X_text.sum(axis=1).A1, 0) if idf is not None: X_text = (X_text * idf) + X_text X_numeric = self.extract_numeric_features(doc_text, len(sentences)) X_text.eliminate_zeros() if extra_features: X_extra_features = self.dict_vectorizer.transform(extra_features) # now combine feature sets. feature_matrix = sp.sparse.hstack((normalize(X_text), X_numeric, X_extra_features)).tocsr() else: #now combine feature sets. feature_matrix = sp.sparse.hstack((normalize(X_text), X_numeric)).tocsr() return feature_matrix
Example #20
Source File: normalization.py From DropEdge with MIT License | 5 votes |
def row_normalize(mx): """Row-normalize sparse matrix""" rowsum = np.array(mx.sum(1)) r_inv = np.power(rowsum, -1).flatten() r_inv[np.isinf(r_inv)] = 0. r_mat_inv = sp.diags(r_inv) mx = r_mat_inv.dot(mx) return mx
Example #21
Source File: preprocessing.py From vgae_pytorch with MIT License | 5 votes |
def preprocess_graph(adj): adj = sp.coo_matrix(adj) adj_ = adj + sp.eye(adj.shape[0]) rowsum = np.array(adj_.sum(1)) degree_mat_inv_sqrt = sp.diags(np.power(rowsum, -0.5).flatten()) adj_normalized = adj_.dot(degree_mat_inv_sqrt).transpose().dot(degree_mat_inv_sqrt).tocoo() return sparse_to_tuple(adj_normalized)
Example #22
Source File: build_tfidf.py From justcopy-backend with MIT License | 5 votes |
def get_tfidf_matrix(cnts): """Convert the word count matrix into tfidf one. tfidf = log(tf + 1) * log((N - Nt + 0.5) / (Nt + 0.5)) * tf = term frequency in document * N = number of documents * Nt = number of occurences of term in all documents """ Ns = get_doc_freqs(cnts) idfs = np.log((cnts.shape[1] - Ns + 0.5) / (Ns + 0.5)) idfs[idfs < 0] = 0 idfs = sp.diags(idfs, 0) tfs = cnts.log1p() tfidfs = idfs.dot(tfs) return tfidfs
Example #23
Source File: citation.py From spektral with MIT License | 5 votes |
def _preprocess_features(features): rowsum = np.array(features.sum(1)) r_inv = np.power(rowsum, -1).flatten() r_inv[np.isinf(r_inv)] = 0. r_mat_inv = sp.diags(r_inv) features = r_mat_inv.dot(features) return features
Example #24
Source File: convolution.py From spektral with MIT License | 5 votes |
def degree_matrix(A): """ Computes the degree matrix of the given adjacency matrix. :param A: rank 2 array or sparse matrix. :return: if A is a dense array, a dense array; if A is sparse, a sparse matrix in DIA format. """ degrees = np.array(A.sum(1)).flatten() if sp.issparse(A): D = sp.diags(degrees) else: D = np.diag(degrees) return D
Example #25
Source File: citation_graph.py From dgl with Apache License 2.0 | 5 votes |
def _normalize(mx): """Row-normalize sparse matrix""" rowsum = np.asarray(mx.sum(1)) r_inv = np.power(rowsum, -1).flatten() r_inv[np.isinf(r_inv)] = 0. r_mat_inv = sp.diags(r_inv) mx = r_mat_inv.dot(mx) return mx
Example #26
Source File: citation_graph.py From dgl with Apache License 2.0 | 5 votes |
def _preprocess_features(features): """Row-normalize feature matrix and convert to tuple representation""" rowsum = np.asarray(features.sum(1)) r_inv = np.power(rowsum, -1).flatten() r_inv[np.isinf(r_inv)] = 0. r_mat_inv = sp.diags(r_inv) features = r_mat_inv.dot(features) return np.asarray(features.todense())
Example #27
Source File: transform.py From dgl with Apache License 2.0 | 5 votes |
def laplacian_lambda_max(g): """Return the largest eigenvalue of the normalized symmetric laplacian of g. The eigenvalue of the normalized symmetric of any graph is less than or equal to 2, ref: https://en.wikipedia.org/wiki/Laplacian_matrix#Properties Parameters ---------- g : DGLGraph The input graph, it should be an undirected graph. Returns ------- list : Return a list, where the i-th item indicates the largest eigenvalue of i-th graph in g. Examples -------- >>> import dgl >>> g = dgl.DGLGraph() >>> g.add_nodes(5) >>> g.add_edges([0, 1, 2, 3, 4, 0, 1, 2, 3, 4], [1, 2, 3, 4, 0, 4, 0, 1, 2, 3]) >>> dgl.laplacian_lambda_max(g) [1.809016994374948] """ g_arr = unbatch(g) rst = [] for g_i in g_arr: n = g_i.number_of_nodes() adj = g_i.adjacency_matrix_scipy(return_edge_ids=False).astype(float) norm = sparse.diags(F.asnumpy(g_i.in_degrees()).clip(1) ** -0.5, dtype=float) laplacian = sparse.eye(n) - norm * adj * norm rst.append(sparse.linalg.eigs(laplacian, 1, which='LM', return_eigenvectors=False)[0].real) return rst
Example #28
Source File: adaptive_sampling.py From dgl with Apache License 2.0 | 5 votes |
def normalize_adj(adj): """Symmetrically normalize adjacency matrix.""" adj = ssp.eye(adj.shape[0]) + adj adj = ssp.coo_matrix(adj) rowsum = np.array(adj.sum(1)) d_inv_sqrt = np.power(rowsum, -0.5).flatten() d_inv_sqrt[np.isinf(d_inv_sqrt)] = 0. d_mat_inv_sqrt = ssp.diags(d_inv_sqrt) return adj.dot(d_mat_inv_sqrt).transpose().dot(d_mat_inv_sqrt)
Example #29
Source File: analysis.py From metal with Apache License 2.0 | 5 votes |
def _conflicted_data_points(L): """Returns an indicator vector where ith element = 1 if x_i is labeled by at least two LFs that give it disagreeing labels.""" m = sparse.diags(np.ravel(L.max(axis=1).todense())) return np.ravel(np.max(m @ (L != 0) != L, axis=1).astype(int).todense())
Example #30
Source File: normalization.py From DropEdge with MIT License | 5 votes |
def random_walk(adj): adj = sp.coo_matrix(adj) row_sum = np.array(adj.sum(1)) d_inv = np.power(row_sum, -1.0).flatten() d_mat = sp.diags(d_inv) return d_mat.dot(adj).tocoo()