[PYTHON] 파이썬에서 매트릭스를 희소하게하는 csv
PYTHON파이썬에서 매트릭스를 희소하게하는 csv
그래프의 노드 간 연결을 나열하는 커다란 csv 파일이 있습니다. 예:
0001,95784 0001,98743 0002,00082 0002,00091
즉 노드 ID 0001은 노드 95784와 98743에 연결되어 있습니다. 나는 이것을 numpy의 드문 드문 행렬로 읽어야한다. 내가 어떻게 할 수 있니? 파이썬에 익숙하지 않기 때문에 이것에 대한 자습서도 도움이 될 것입니다.
해결법
-
==============================
1.scipy의 lil_matrix (리스트 행렬의리스트)를 사용한 예제.
scipy의 lil_matrix (리스트 행렬의리스트)를 사용한 예제.
$ 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] []]
-
==============================
2.인접 행렬을 원할 경우 다음과 같이 할 수 있습니다.
인접 행렬을 원할 경우 다음과 같이 할 수 있습니다.
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
-
==============================
3.순수 파이썬 네트워크 / 그래프 패키지 인 Networkx에도 관심이 있습니다.
순수 파이썬 네트워크 / 그래프 패키지 인 Networkx에도 관심이 있습니다.
웹 사이트에서 :
>>> 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)]
from https://stackoverflow.com/questions/1938894/csv-to-sparse-matrix-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] PyInstaller로 빌드 된 Windows EXE가 다중 처리와 함께 실패합니다. (0) | 2018.11.18 |
---|---|
[PYTHON] Excel에서 셀 너비 조정 (0) | 2018.11.18 |
[PYTHON] 더 강력한 HTML 파서를 파이썬 기계화에 연결할 수 있습니까? (0) | 2018.11.18 |
[PYTHON] WN 효과를 사용하여 문자열의 감정 / 분위기 감지 (0) | 2018.11.18 |
[PYTHON] 판다에서 한 열을 제외한 모든 열을 선택하는 방법은 무엇입니까? (0) | 2018.11.18 |