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]])
Ś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)
Odpowiedzi:
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).
źródło
Range(n)
już daje 0,1, ..., n-1 .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.
źródło
Ponadto prawidłowy sposób zliczania całkowitej liczby przedmiotów to:
sum(len(x) for x in input)
źródło
Zakładając dane wejściowe [wiersz] [kolumna],
rows = len(input) cols = map(len, input) #list of column lengths
źródło
Możesz również użyć np.size (a, 1), 1 tutaj to oś, a to da ci liczbę kolumn
źródło
zarozumiały
input[row][col]
rows = len(input) cols = len(list(zip(*input)))
źródło