In [1]:
import numpy as np
from scipy.sparse.csgraph import connected_components
from scipy.sparse import csr_matrix

In [2]:
l = [[0, 1, 1, 0, 0],
     [0, 0, 1, 0, 0],
     [0, 0, 0, 0, 0],
     [0, 0, 0, 0, 1],
     [0, 0, 0, 0, 0]]

In [3]:
# n, labels = connected_components(l)
# AttributeError: 'list' object has no attribute 'dtype'

In [4]:
a = np.array(l)
print(type(a))


<class 'numpy.ndarray'>

In [5]:
n, labels = connected_components(a)

In [6]:
print(n)


2

In [7]:
print(labels)


[0 0 0 1 1]

In [8]:
csr = csr_matrix(l)
print(csr)


  (0, 1)	1
  (0, 2)	1
  (1, 2)	1
  (3, 4)	1

In [9]:
print(type(csr))


<class 'scipy.sparse.csr.csr_matrix'>

In [10]:
n, labels = connected_components(csr)

In [11]:
print(n)


2

In [12]:
print(labels)


[0 0 0 1 1]

In [13]:
n = 5
d = [1, 1, 1, 1]
i = [0, 0, 1, 3]
j = [1, 2, 2, 4]

In [14]:
csr = csr_matrix((d, (i, j)), (n, n))
print(csr)


  (0, 1)	1
  (0, 2)	1
  (1, 2)	1
  (3, 4)	1

In [15]:
print(connected_components(csr, return_labels=False))


2

In [16]:
ld = [[0, 1, 1, 0, 0],
      [1, 0, 1, 0, 0],
      [0, 0, 0, 0, 0],
      [0, 0, 0, 0, 1],
      [0, 0, 0, 1, 0]]

In [17]:
n, labels = connected_components(csr_matrix(ld))

In [18]:
print(n)


2

In [19]:
print(labels)


[0 0 0 1 1]

In [20]:
n, labels = connected_components(csr_matrix(ld), connection='strong')

In [21]:
print(n)


3

In [22]:
print(labels)


[1 1 0 2 2]

In [23]:
ld2 = [[0, 1, 0, 0, 0],
       [0, 0, 1, 0, 0],
       [1, 0, 0, 0, 0],
       [0, 0, 0, 0, 1],
       [0, 0, 0, 1, 0]]

In [24]:
n, labels = connected_components(csr_matrix(ld2), connection='strong')

In [25]:
print(n)


2

In [26]:
print(labels)


[0 0 0 1 1]

In [27]:
n, labels = connected_components(csr_matrix(ld), directed=False, connection='strong')

In [28]:
print(n)


2

In [29]:
print(labels)


[0 0 0 1 1]

In [30]:
lw = [[0, 8, 5.2, 0, 0],
      [0, 0, 3, 0, 0],
      [0, 0, 0, 0, 0],
      [0, 0, 0, 0, -2],
      [0, 0, 0, 0, 0]]

In [31]:
n, labels = connected_components(csr_matrix(lw))

In [32]:
print(n)


2

In [33]:
print(labels)


[0 0 0 1 1]