Znajdź długość tablicy 2D Python

83

Jak sprawdzić, ile wierszy i kolumn znajduje się w tablicy 2D?

Na przykład,

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

powinien być wyświetlany jako 3 wiersze i 2 kolumny.

Ronaldinho Learn Coding
źródło
4
wygląda na to, że powinieneś używać tablicy numpy, a nie listy list
wim

Odpowiedzi:

159

Lubię to:

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

Zakładając, że wszystkie listy podrzędne mają tę samą długość (to znaczy nie jest to tablica postrzępiona).

Óscar López
źródło
5
Tak długo, jak nie jest to tablica postrzępiona, jest to idealne.
Makoto
yo, chcę znaleźć sumę wszystkich elementów w tej tablicy 2D def sum1 (input): sum = 0 for row in range (len (input) -1): for col in range (len (input [0]) - 1 ): sum = sum + input [rzad] [col] return sum print sum1 ([[1, 2], [3, 4], [5, 6]]) Wyświetla 4 zamiast 21 (1 + 2 + 3 + 4 + 5 + 6 = 21). Gdzie jest mój błąd?
Ronaldinho Learn Coding
1
Jest prostsze rozwiązanie: suma (suma (x) dla x na wejściu)
Óscar López
1
@LongBodie: Błąd polega na tym, że odejmujesz 1 od długości, których nie powinieneś. Range(n)już daje 0,1, ..., n-1 .
Junuxx
39

Możesz użyć numpy.shape.

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

Wynik:

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

Pierwsza wartość w krotce to liczba wierszy = 3; druga wartość w krotce to liczba kolumn = 2.

Akavall
źródło
2
Dziękuję, nie chciałem używać numpy do tego
urgeo
18

Ponadto prawidłowy sposób zliczania całkowitej liczby przedmiotów to:

sum(len(x) for x in input)
MattNo
źródło
Świetnie, właśnie tego potrzebowałem! W moim przypadku mogę policzyć wszystkie elementy listy do drugiego stopnia: suma (len (x) if isinstance (x, list) else 1 for x in some_list)
Bjarne Magnussen
10

Zakładając dane wejściowe [wiersz] [kolumna],

    rows = len(input)
    cols = map(len, input)  #list of column lengths
machow
źródło
1

Możesz również użyć np.size (a, 1), 1 tutaj to oś, a to da ci liczbę kolumn

Riya Das
źródło
0

zarozumiały input[row][col]

rows = len(input)
cols = len(list(zip(*input)))
MiaeKim
źródło