2017-03-24 6 views
0

Ich habe eine Liste von Indizes/Werte, die wie folgt aussieht:erstellen Matrix von Werten in Python

19, 11, 43 
19, 12, 23 
19, 13, 2 
19, 14, 90 
20, 11, 12 
20, 12, 0 
20, 13, 98 
20, 14, 2 
21, 11, 43 
21, 12, 8 
21, 13, 55 
21, 14, 34 

ich eine Methode benötigen, vorzugsweise mit Python, die es in eine i x j Matrix column1 und column2 transformiert als i & j Indizes, während Sie die Werte innerhalb Matrix entsprechen column3, so das Ergebnis sieht wie folgt aus:

 11 12 13 14 
19 43 23 2 90 
20 12 0 98 2 
21 43 8 55 34 

Kann jemand mir Ratschläge, wie dies zu erreichen?

+1

Sie können nicht erwarten, dass Menschen Ihre Arbeit für Sie erledigen. Zeig deine Arbeit - was hast du bisher selbst versucht? – xyres

+0

Vielen Dank für Ihren hilfreichen Kommentar. Ich habe gekämpft, um einen Weg zu finden, damit umzugehen, aber ich kann keinen Weg finden, und keine der Lösungen, die ich in stackoverflow oder anderswo gefunden habe, scheint zu meinem Fall zu passen. – user3142418

Antwort

0

Hoffentlich können Sie Pandas verwenden, becuase, wenn Sie können, das sehr einfach ist:

Code:

import pandas as pd 
df = pd.read_csv(data_file, header=None, names=['col1', 'col2', 'col3']) 
print(df) 

pivot = df.pivot(index='col1', columns='col2', values='col3') 
print(pivot) 

Testdaten:

from io import StringIO 
data_file = StringIO(u'\n'.join([x.strip() for x in """ 
    19, 11, 43 
    19, 12, 23 
    19, 13, 2 
    19, 14, 90 
    20, 11, 12 
    20, 12, 0 
    20, 13, 98 
    20, 14, 2 
    21, 11, 43 
    21, 12, 8 
    21, 13, 55 
    21, 14, 34 
""".split('\n')[1:-1]])) 

Ergebnisse :

col1 col2 col3 
0  19 11 43 
1  19 12 23 
2  19 13  2 
3  19 14 90 
4  20 11 12 
5  20 12  0 
6  20 13 98 
7  20 14  2 
8  21 11 43 
9  21 12  8 
10 21 13 55 
11 21 14 34 

col2 11 12 13 14 
col1     
19 43 23 2 90 
20 12 0 98 2 
21 43 8 55 34 
0

Die Frage muss geklärt werden, welche Datenstruktur das Ergebnis hosten sollte. Sie könnten mit der geschachtelten Kerndatenstruktur arbeiten, aber normalerweise wird dies mit Pandas oder Numpy gemacht.

Meine Lösung mit numpy

import numpy as np 

text="""19, 11, 43 
19, 12, 23 
19, 13, 2 
19, 14, 90 
20, 11, 12 
20, 12, 0 
20, 13, 98 
20, 14, 2 
21, 11, 43 
21, 12, 8 
21, 13, 55 
21, 14, 34""" 

A_import=np.matrix(text.replace('\n',';')) 
A=A_import[:,2].reshape(3,4) 
A 

gibt eine numpy Objekt Matrix

matrix([[43, 23, 2, 90], 
     [12, 0, 98, 2], 
     [43, 8, 55, 34]]) 

(ich die Frage in der Art und Weise gelesen haben, dass Sie insbesondere über die Matrix kümmern, so habe ich weggelassen, um die Indizes.)

Verwandte Themen