2016-04-29 8 views
1

Erstellen habe ich ein Tabellendaten wie:ein Wörterbuch für tabellarische Daten in Julia

+---+----+----+ 
| | a | b | 
+---+----+----+ 
| P | 1 | 2 | 
| Q | 10 | 20 | 
+---+----+----+ 

und ich möchte dies eine Dict mit darzustellen.

Mit den Spalten- und Zeilen Namen:

x = ["a", "b"] 
y = ["P", "Q"] 

und Daten

data = [ 1 2 ; 
     10 20 ] 

wie kann ich ein Wörterbuch Objekt d, so dass d["a", "P"] = 1 und so weiter erstellen? Gibt es einen Weg wie

d = Dict(zip(x,y,data)) 

?

+0

NamedArrays (Link: https://github.com/davidavdav/NamedArrays.jl) könnte tun, was Sie in Bezug auf Indexierung und mehr wollen. –

Antwort

4

Ihr Code arbeitet mit einer geringfügigen Änderung Iterators.product zu verwenden:

d = Dict(zip(Iterators.product(x, y), data.')) 

das Sie eine Linie using Iterators zu einem Projekt hinzuzufügen tun müssen, und könnte zu Pkg.add("Iterators") benötigen. Da Julia-Matrizen Spaltenspalten sind (Elemente werden der Reihe nach in Spalten gespeichert, und Spalten werden der Reihe nach in der Matrix gespeichert), mussten wir die data-Matrix mit dem Transponieroperator .' transponieren.

Dies ist eine wörtliche Antwort auf Ihre Frage. Ich empfehle das nicht. Wenn Sie Tabellendaten haben, ist es wahrscheinlich besser, eine DataFrame zu verwenden. Diese sind nicht zweidimensional (Zeilen haben keine Namen), aber das kann behoben werden, indem eine zusätzliche Spalte hinzugefügt wird und select verwendet wird.

Verwandte Themen