Finden Sie die Länge des 2D-Arrays Python

79

Wie finde ich, wie viele Zeilen und Spalten sich in einem 2D-Array befinden?

Zum Beispiel,

Input = ([[1, 2], [3, 4], [5, 6]])`

sollte als 3 Zeilen und 2 Spalten angezeigt werden.

Ronaldinho Codierung lernen
quelle
3
klingt so, als ob Sie ein numpy Array verwenden sollten, keine Liste von Listen
wim

Antworten:

152

So was:

numrows = len(input)    # 3 rows in your example
numcols = len(input[0]) # 2 columns in your example

Angenommen, alle Unterlisten haben die gleiche Länge (das heißt, es ist kein gezacktes Array).

Óscar López
quelle
5
Solange es sich nicht um ein gezacktes Array handelt, ist dies ideal.
Makoto
yo, ich möchte die Summe aller Elemente in diesem 2D-Array def sum1 (Eingabe) finden: sum = 0 für Zeile im Bereich (len (Eingabe) -1): für Spalte im Bereich (len (Eingabe [0]) - 1 ): sum = sum + input [row] [col] return sum print sum1 ([[1, 2], [3, 4], [5, 6]]) Es werden 4 statt 21 (1 + 2 + 3) angezeigt + 4 + 5 + 6 = 21). Wo ist mein Fehler?
Ronaldinho Learn Coding
1
Es gibt eine einfachere Lösung: Summe (Summe (x) für x in Eingabe)
Óscar López
1
@ LongBodie: Der Fehler ist, dass Sie 1 von den Längen subtrahieren, wo Sie nicht sollten. Range(n)gibt schon 0,1, ..., n-1 .
Junuxx
39

Sie können verwenden numpy.shape.

import numpy as np
x = np.array([[1, 2],[3, 4],[5, 6]])

Ergebnis:

>>> x
array([[1, 2],
       [3, 4],
       [5, 6]])
>>> np.shape(x)
(3, 2)

Der erste Wert im Tupel ist Anzahl Zeilen = 3; Der zweite Wert im Tupel ist die Anzahl der Spalten = 2.

Akavall
quelle
1
Vielen Dank, ich wollte Numpy nicht für diese Sache verwenden
Drango
16

Darüber hinaus wäre die korrekte Methode zum Zählen der gesamten Artikelnummer:

sum(len(x) for x in input)
MattNo
quelle
Großartig, das war genau das, was ich brauchte! In meinem Fall kann ich alle Elemente einer Liste bis zum 2. Grad zählen: Summe (len (x) wenn isinstance (x, Liste) sonst 1 für x in some_list)
Bjarne Magnussen
10

Angenommen, Eingabe [Zeile] [Spalte],

    rows = len(input)
    cols = map(len, input)  #list of column lengths
machow
quelle
1

Sie können auch np.size (a, 1) verwenden. 1 ist hier die Achse und gibt Ihnen die Anzahl der Spalten

Riya Das
quelle
0

unter der Annahme input[row][col]

rows = len(input)
cols = len(list(zip(*input)))
MiaeKim
quelle