it-swarm.com.de

2D-Arrays in Python

Was ist der beste Weg, um 2D-Arrays in Python zu erstellen?

Ich möchte Werte wie diese speichern:

X , Y , Z

damit ich auf Daten wie X[2],Y[2],Z[2] oder X[n],Y[n],Z[n] zugreifen kann, wobei n variabel ist ..__ Ich weiß am Anfang nicht, wie groß n sein würde, also möchte ich am Ende Werte anhängen.

23
spring liu
>>> a = []

>>> for i in xrange(3):
...     a.append([])
...     for j in xrange(3):
...             a[i].append(i+j)
...
>>> a
[[0, 1, 2], [1, 2, 3], [2, 3, 4]]
>>>
22
Perica Zivkovic

Abhängig davon, was Sie tun, verfügen Sie möglicherweise nicht wirklich über ein 2D-Array.

In 80% der Fälle haben Sie eine einfache Liste von "zeilenartigen Objekten", die richtige Sequenzen sein können.

myArray = [ ('pi',3.14159,'r',2), ('e',2.71828,'theta',.5) ]

myArray[0][1] == 3.14159
myArray[1][1] == 2.71828

Häufig handelt es sich um Instanzen einer Klasse oder eines Wörterbuchs oder einer Gruppe oder etwas interessanter, die Sie nicht in Ihren vorherigen Sprachen hatten.

myArray = [ {'pi':3.1415925,'r':2}, {'e':2.71828,'theta':.5} ]

In 20% der Fälle haben Sie ein Wörterbuch, das von einem Paar eingegeben wird

myArray = { (2009,'aug'):(some,Tuple,of,values), (2009,'sep'):(some,other,Tuple) }

Brauchen Sie selten eine Matrix?.

Sie haben eine große Anzahl von Collection-Klassen in Python. Die Chancen stehen gut, dass Sie etwas Interessanteres als eine Matrix haben.

10
S.Lott

In Python würde man normalerweise listen für diesen Zweck verwenden. Listen können beliebig verschachtelt werden, sodass ein 2D-Array erstellt werden kann. Nicht jede Unterliste muss die gleiche Größe haben, damit das andere Problem gelöst wird. Schauen Sie sich die Beispiele an, auf die ich verlinkt habe.

9
Stephan202

Wenn Sie ernsthaft mit Arrays arbeiten möchten, sollten Sie die Bibliothek numpy verwenden. Auf diese Weise können Sie beispielsweise Vektoradditionen und Matrixmultiplikationen durchführen und sind bei großen Arrays viel schneller als Python-Listen. 

Numpy setzt jedoch voraus, dass die Größe vordefiniert ist. Natürlich können Sie auch numpy Arrays in einer Liste speichern, wie:

import numpy as np
vec_list = [np.zeros((3,)) for _ in range(10)]
vec_list.append(np.array([1,2,3]))
vec_sum = vec_list[0] + vec_list[1]  # possible because we use numpy
print vec_list[10][2]  # prints 3

Da Ihre numpy-Arrays jedoch recht klein sind, ist der Aufwand im Vergleich zur Verwendung eines Tuples wahrscheinlich. Es hängt alles von Ihren Prioritäten ab.

Siehe auch diese andere Frage , die ziemlich ähnlich ist (abgesehen von der Variablengröße).

7
nikow

Ich würde vorschlagen, dass Sie ein Wörterbuch wie folgt verwenden:

arr = {}

arr[1] = (1, 2, 4)
arr[18] = (3, 4, 5)

print(arr[1])
>>> (1, 2, 4)

Wenn Sie nicht sicher sind, ob ein Eintrag im Wörterbuch definiert ist, benötigen Sie einen Validierungsmechanismus, wenn Sie "arr [x]" aufrufen, z. Try-Exceptions.

5
Roee Adler

Wenn Sie Bedenken hinsichtlich des Speicherbedarfs haben, enthält die Python-Standardbibliothek das Modul array ; Diese Arrays enthalten Elemente des gleichen Typs.

3
Eric O Lebigot

Bitte beachten Sie die folgenden Codes:

from numpy import zeros
scores = zeros((len(chain1),len(chain2)), float)
0
C-Zeous
x=list()
def enter(n):
    y=list()
    for i in  range(0,n):
        y.append(int(input("Enter ")))
    return y
for i in range(0,2):
    x.insert(i,enter(2))
print (x)

hier habe ich die Funktion zum Erstellen eines 1-D-Arrays erstellt und als Array-Mitglied in ein anderes Array eingefügt. Mehrere 1-D-Arrays innerhalb eines Arrays. Wenn sich der Wert von n und i ändert, erstellen Sie mehrdimensionale Arrays

0
Shah_jahan