2016-02-23 13 views
6

zu repräsentieren Ich arbeite an der Verarbeitung von geologischen Daten. Daten sind eine 2D (x-y) -Karte von vertikalen (z) Spalten von Kästchen, wobei jeder Box mehr als ein numerischer Parameter zugeordnet ist. Ich brauche die Freiheit, die Box-Parameter hinzuzufügen/zu entfernen, während sich der Code entwickelt (was bedeutet, dass ich keine Ahnung habe, wie viele ich tatsächlich brauchen würde). Die Anzahl der Boxen variiert auf der Karte. Das resultierende 3D-Array ist also in z-Richtung gezackt. Die auf die Daten angewendeten Algorithmen arbeiten jeweils auf einer vertikalen Spalte von Boxen.Empfohlene Möglichkeit, meine Daten mit numpy

Was wäre eine sinnvolle Möglichkeit, eine solche Datenstruktur mit den Funktionen numpy/scipy darzustellen? Ich habe über ein 3D-strukturiertes Array mit einem benutzerdefinierten dtype nachgedacht. Aber aufgrund der inhärent zackigen Natur der Daten wird es möglicherweise viele Nullen haben.

+0

Wenn Sie wissen nicht, wie viele Parameter Sie benötigen, vielleicht müssen Sie Wörterbücher verwenden. –

Antwort

4

Wenn Ihre Daten während Ihres Codes veränderbar sind, wird numpy nicht empfohlen.

Eine mögliche Lösung besteht darin, ein Wörterbuch zu erstellen, dessen Schlüssel die Parameter sind. Zum Beispiel in einem Fall mit 2 Boxen mit Koordinaten [x1, y1] und [x2, y2], Höhen h1 und h2 und andere allgemeine Parameter können Sie definieren.

data = { 
    'boxes': [[x1, y1], [x2, y2]], 
    'height': [h1, h2], 
    'general_parameter': [par1, par2] 
} 

auf diese Weise können Sie Parameter und Felder hinzufügen können, wenn Sie benötigen:

data['new_parameter'] = [new_par1, new_par2] 

wenn Sie numpy verwenden möchten, können Sie list s mit numpy Array ersetzen kann:

import numpy as np 

data = { 
    'boxes': np.array([[x1, y1], [x2, y2]]), 
    'height': np.array([h1, h2]), 
    'general_parameter': np.array([par1, par2]) 
} 
+0

Der Grund, warum ich numpy erwähne ist, dass ich in der Regel über eine Million Boxen haben werde, um mit iterativen Algorithmen zu arbeiten, also wird Python wahrscheinlich ersticken, wenn ich nicht den wissenschaftlichen Stack verwende. – MindV0rtex

+0

Ich aktualisierte die Antwort mit numpy Array. –

+0

Wenn Sie Millionen von Boxen aber wenige Parameter haben, ist dies eine gute Lösung. –

Verwandte Themen