Populäre Arrays in Python (numpy)?

Gegebene Datei im folgenden Format:

aa 0 ab 1 ac 1 bb 0 ba 1 bc 1 cc 0 ca 1 cb 1 

Die dritte Spalte ist der Abstand zwischen den Elementen in der ersten und zweiten Spalte. Wenn ich eine solche Datei in pyton als verschachtelte Liste lese, wie kann ich sie in eine symmetrische Matrix umwandeln, dh,

  abc a 0 1 1 b 1 0 1 b 1 1 0 

? Ich möchte auch die Spalten- und Zeilennamen enthalten.

Ich würde gerne gerne numpy verwenden, um diese Aufgabe zu vervollständigen.

Irgendwelche Vorschläge?

Danke: D.

2 Solutions collect form web for “Populäre Arrays in Python (numpy)?”

 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 

Ich weiß nicht, wie man Zeilen und Spalten in numpy Etikett, so dass ich nur eine dict Mapping der Zeile Label, um die Zeile Index und ein anderes tut das gleiche für die Spalten. Wenn Sie es brauchen, können Sie eine umgekehrte Karte machen, wie unten, oder Sie können Zeilen und Cols ein Bidict machen .

 rows_reverse = dict((v, k) for k, v in rows) cols_reverse = dict((v, k) for k, v in cols) 

Ein ganz anderer Ansatz:

 import numpy as np # Load "Row Col Value" text file ar = np.loadtxt('file.txt', [('R','|S1'), ('C','|S1'), ('V','i')]) names = np.unique(np.row_stack((ar['R'], ar['C']))).tolist() vf = np.vectorize(lambda x: names.index(x), otypes='i') # load them in an output array out = np.empty((len(names), len(names)), 'i') out[vf(ar['R']), vf(ar['C'])] = ar['V'] 
  • Numpy Indexing - Fragen zu ungeraden Verhaltensweisen / Inkonsistenzen
  • Wie man elementweise auf einer Matrix des Typs scipy.sparse.csr_matrix operiert?
  • Schaffung eines Vertrauens Ellipsen in einem sccatterplot mit matplotlib
  • Vergleiche df1 Spalte 1 zu allen Spalten in df2 Rückgabe des Index von df2
  • IPython-Motoren, die unterschiedliche Ergebnisse zurückgeben
  • Effiziente Methode zur Berechnung der Dichte von unregelmäßig beabstandeten Punkten
  • Stückweise Funktion mit 3D-Plot
  • Ersetzen Sie alle Elemente von Python NumPy Array, die größer als ein Wert sind
  • Exportieren von / importieren zu numpy, scipy in SQLite und HDF5 Formate
  • Wie kann ich jedes Element eines numpy Array von Strings schneiden?
  • Wie überprüfe ich die Größe eines Schwimmers in Python?
  • Python ist die beste Programmiersprache der Welt.