import numpy as np
from itertools import count
data = [line.split() for line in inputfile.readlines()]
rows = dict(zip(sorted(set(line[0] for line in data)), count()))
cols = dict(zip(sorted(set(line[1] for line in data)), count()))
array = np.zeros((len(rows), len(cols)))
for row, col, val in data:
index = (rows[row], cols[col])
array[index] = val
Я не знаю, как пометить строки и столбцы в numpy, поэтому я просто сделал dict, отображающий метку строки в индекс строки, а другой сделал то же самое для столбцов. Если вам это нужно, вы можете сделать обратную карту, как показано ниже, или вы можете сделать строки и столбцы bidict .
rows_reverse = dict((v, k) for k, v in rows)
cols_reverse = dict((v, k) for k, v in cols)