Это идеальный вариант, если это не зубчатый массив.
Макото
yo, я хочу найти сумму всех элементов в этом 2D-массиве def sum1 (input): sum = 0 для строки в диапазоне (len (input) -1): for col in range (len (input [0]) - 1 ): sum = sum + input [row] [col] return sum print sum1 ([[1, 2], [3, 4], [5, 6]]]) Отображает 4 вместо 21 (1 + 2 + 3 + 4 + 5 + 6 = 21). Где моя ошибка?
Роналдиньо изучает кодирование
1
Есть более простое решение: sum (sum (x) for x in input)
Оскар Лопес
1
@LongBodie: ошибка в том, что вы вычитаете 1 из длин, которых не следует. Range(n)уже дает 0,1, ..., n-1 .
Junuxx
39
Вы можете использовать numpy.shape.
import numpy as np
x = np.array([[1, 2],[3, 4],[5, 6]])
Отлично, это именно то, что мне нужно! В моем случае я могу подсчитать все элементы списка до 2-й степени: sum (len (x) if isinstance (x, list) else 1 for x in some_list)
Ответы:
Как это:
numrows = len(input) # 3 rows in your example numcols = len(input[0]) # 2 columns in your example
Предполагается, что все подсписки имеют одинаковую длину (то есть это не зубчатый массив).
источник
Range(n)
уже дает 0,1, ..., n-1 .Вы можете использовать
numpy.shape
.import numpy as np x = np.array([[1, 2],[3, 4],[5, 6]])
Результат:
>>> x array([[1, 2], [3, 4], [5, 6]]) >>> np.shape(x) (3, 2)
Первое значение в кортеже - число строк = 3; Второе значение в кортеже - количество столбцов = 2.
источник
Кроме того, правильным способом подсчета общего количества предметов будет:
sum(len(x) for x in input)
источник
Предполагая ввод [строка] [столбец],
rows = len(input) cols = map(len, input) #list of column lengths
источник
Вы также можете использовать np.size (a, 1), 1 вот ось, и это даст вам количество столбцов
источник
предполагая
input[row][col]
rows = len(input) cols = len(list(zip(*input)))
источник