Допустим, у меня есть и массив mxn. Я хочу передать каждый столбец этого массива функции для выполнения некоторой операции над всем столбцом. Как мне перебрать столбцы массива?
Например, у меня есть массив 4 x 3, например
1 99 2
2 14 5
3 12 7
4 43 1
for column in array:
some_function(column)
где столбец будет «1,2,3,4» в первой итерации, «99,14,12,43» во второй и «2,5,7,1» в третьей.
Ответы:
Просто переберите транспонированный массив:
источник
array.T
это не дорого, поскольку это просто меняет «шаги»array
(см. Этот ответ для интересного обсуждения)Это должно дать вам начало
источник
Для трехмерного массива вы можете попробовать:
См. Документацию о том, как
array.transpose
работает. По сути, вы указываете, какой размер сдвинуть. В этом случае мы перемещаем второе измерение (например, столбцы) в первое измерение.источник
источник
Вы также можете использовать unzip для перебора столбцов
источник
Например, вы хотите найти среднее значение каждого столбца в матрице. Создадим следующую матрицу
Функция для среднего:
Чтобы сделать то, что необходимо, и сохранить результат в векторной двоеточии "результаты"
Результаты: массив ([4.33333333, 5., 5.66666667, 4.])
источник
В качестве альтернативы вы можете использовать
enumerate
. Он дает вам номер столбца, а также значения столбца.источник