csv к разреженной матрице в Python

У меня есть большой файл CSV, который перечисляет соединения между узлами в графике. пример:

0001,95784
0001,98743
0002,00082
0002,00091

Таким образом, это означает, что идентификатор 0001 узла подключен к узлу 95784 и 98743 и так далее. Я должен считать это в разреженную матрицу в numpy. Как я могу сделать это? Я плохо знаком с Python, таким образом, учебные руководства на этом также помогли бы.

9
задан Iterator 26 September 2011 в 15:55
поделиться

3 ответа

Пример использования lil_matrix (матрица списков) scipy.

Матрица связанного списка на основе строк.

Она содержит список ( self.rows ) строк, каждая из которых представляет собой отсортированный список индексов столбцов ненулевых элементов. Он также содержит список ( self.data ) списков этих элементов.

$ cat 1938894-simplified.csv
0,32
1,21
1,23
1,32
2,23
2,53
2,82
3,82
4,46
5,75
7,86
8,28

Код:

#!/usr/bin/env python

import csv
from scipy import sparse

rows, columns = 10, 100
matrix = sparse.lil_matrix( (rows, columns) )

csvreader = csv.reader(open('1938894-simplified.csv'))
for line in csvreader:
    row, column = map(int, line)
    matrix.data[row].append(column)

print matrix.data

Вывод:

[[32] [21, 23, 32] [23, 53, 82] [82] [46] [75] [] [86] [28] []]
11
ответ дан 4 December 2019 в 14:28
поделиться

Если вам нужна матрица смежности , вы можете сделать что-то вроде:

from scipy.sparse import *
from scipy import *
from numpy import *
import csv
S = dok_matrix((10000,10000), dtype=bool)
f = open("your_file_name")
reader = csv.reader(f)
for line in reader:
    S[int(line[0]),int(line[1])] = True
2
ответ дан 4 December 2019 в 14:28
поделиться

Возможно, вас также заинтересует Networkx , чистый сетевой / графический пакет на Python.

С веб-сайта:

NetworkX - это пакет Python для создания , манипулирование и изучение структуры, динамики и функций сложных сетей.

>>> import networkx as nx
>>> G=nx.Graph()
>>> G.add_edge(1,2)
>>> G.add_node("spam")
>>> print G.nodes()
[1, 2, 'spam']
>>> print G.edges()
[(1, 2)]
1
ответ дан 4 December 2019 в 14:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: