Getting started

scikit-network is an open-source python package for the analysis of large graphs.


Install scikit-network:

$ pip install scikit-network

Import scikit-network in a Python project:

import sknetwork as skn

Data format

Each graph is represented by its adjacency matrix, either as a dense numpy array or a sparse scipy CSR matrix. A bipartite graph can be represented by its biadjacency matrix, in the same format.

Check our tutorial Getting started for various ways of loading a graph (from a list of edges, a dataframe or a TSV file, for instance).


We use the following notations in the documentation:


For undirected graphs:

  • \(A\) is the adjacency matrix of the graph (dimension \(n\times n\))

  • \(d = A1\) is the vector of node weights (node degrees if the matrix \(A\) is binary)

  • \(D = \text{diag}(d)\) the diagonal matrix of node weights


For directed graphs:

  • \(A\) is the adjacency matrix of the graph (dimension \(n\times n\))

  • \(d^+ = A1\) and \(d^- = A^T1\) are the vectors of out-weights and in-weights of nodes (out-degrees and in-degrees if the matrix \(A\) is binary)

  • \(D^+ = \text{diag}(d^+)\) and \(D^- = \text{diag}(d^-)\) are the diagonal matrices of out-weights and in-weights


For bipartite graphs:

  • \(B\) is the biadjacency matrix of the graph (dimension \(n_1\times n_2\))

  • \(d_1 = B1\) and \(d_2 = B^T1\) are the vectors of weights (rows and columns)

  • \(D_1 = \text{diag}(d_1)\) and \(D_2 = \text{diag}(d_2)\) are the diagonal matrices of weights.


  • Adjacency and biadjacency matrices have non-negative entries (the weights of the edges).

  • Bipartite graphs are undirected but have a special structure that is exploited by some algorithms. These algorithms are identified with the prefix Bi.