897 Stimmen

Wie definiert man ein zweidimensionales Array?

Ich möchte ein zweidimensionales Array ohne eine initialisierte Länge wie folgt definieren:

Matrix = [][]

Dies führt jedoch zu einem Fehler:

IndexError: Listenindex außerhalb des Bereichs

18 Stimmen

Man muss nicht Arrays definieren oder irgendetwas anderes. Sie können jedoch mehrdimensionale Sequenzen erstellen, wie die Antworten hier zeigen. Denken Sie daran, dass Python Variablen sind untypisiert, aber Werte sind stark typisiert.

2 Stimmen

Ich bin verwirrt. Von anderen Sprachen kommend: es IST ein Unterschied zwischen einem 1D-Array, das 1D-Arrays enthält und einem 2D-Array. Und AFAIK gibt es keine Möglichkeit, ein mehrdimensionales Array (oder Liste) in Python zu haben. Sollte hier gesagt werden...

4 Stimmen

10voto

Namrata Tolani Punkte 807

Mit NumPy können Sie eine leere Matrix wie folgt initialisieren:

import numpy as np
mm = np.matrix([])

Und später Daten wie diese anhängen:

mm = np.append(mm, [[1,2]], axis=1)

0 Stimmen

Was wären die Vor- und Nachteile der Verwendung von Numpy anstelle von "List Comprehension"?

8voto

wsanders Punkte 198

Ich lese kommagetrennte Dateien wie diese ein:

data=[]
for l in infile:
    l = split(',')
    data.append(l)

Die Liste "data" ist dann eine Liste von Listen mit dem Index data[row][col]

7voto

alessadnro Punkte 71

Wenn Sie in der Lage sein wollen, es als 2D-Array zu denken, anstatt gezwungen zu sein, in Form einer Liste von Listen zu denken (was meiner Meinung nach viel natürlicher ist), können Sie Folgendes tun:

import numpy
Nx=3; Ny=4
my2Dlist= numpy.zeros((Nx,Ny)).tolist()

Das Ergebnis ist eine Liste (kein NumPy-Array), und Sie können die einzelnen Positionen mit Zahlen, Zeichenketten oder anderem überschreiben.

0 Stimmen

Sont numpy.matrix gleichbedeutend mit numpy.zeros ohne Nullen, ohne Liste zu sein?

7voto

Das ist es, was Wörterbuch ist wie geschaffen für!

matrix = {}

Sie können definieren Tasten y Werte auf zwei Arten:

matrix[0,0] = value

ou

matrix = { (0,0)  : value }

Ergebnis:

   [ value,  value,  value,  value,  value],
   [ value,  value,  value,  value,  value],
   ...

7voto

pterodragon Punkte 401

Verwendung:

import copy

def ndlist(*args, init=0):
    dp = init
    for x in reversed(args):
        dp = [copy.deepcopy(dp) for _ in range(x)]
    return dp

l = ndlist(1,2,3,4) # 4 dimensional list initialized with 0's
l[0][1][2][3] = 1

Ich denke, NumPy ist der Weg zu gehen. Die oben ist eine generische, wenn Sie nicht wollen, NumPy zu verwenden.

0 Stimmen

Ich mag diesen Versuch, etwas Einfaches mit Vanilla Python zu machen, ohne numpy verwenden zu müssen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X