У меня есть текстовый файл с каждой линией, указывающей край на графике, напримерсоздание разреженной матрицы неизвестного размера
2 5 1
указует на край веса 1 между узлами 2 и 5. Я хочу, чтобы создать с использованием этих кортежей. Как правило, я инициализировал разреженную матрицу как
G = scipy.sparse.lil_matrix((n,n))
где n - количество узлов на графике. Но в этом случае я не знаю, что такое «n». Есть ли более эффективный способ создания матрицы, чем цикл по строкам файла, чтобы найти индекс максимального узла, создав lil_matrix, а затем снова перейдя по файлу? Моя текущая реализация такова:
n = 0
with open(gfile) as f:
for line in f:
temp = map(int,line.split())
n = np.max([n,temp[0],temp[1]])
G = sp.lil_matrix((n,n))
with open(gfile) as f:
for line in f:
temp = map(int,line.split())
G[temp[0],temp[1]] = temp[2]
благодаря ! В вашем комментарии loadtxt: я думаю, что загружает весь txt-файл, которого я хотел избежать, поскольку некоторые из этих файлов могут быть довольно большими. – NSR
Новый 'genfromtxt' принимает параметр' max_rows'. И все версии позволяют вам создавать линии через собственный фильтр. В любом случае, 'genfromtxt' не быстрее, чем чтение вашей собственной строки и анализ. Он делает то же самое. – hpaulj