Numpy, как перебирать столбцы массива?

Предположим, у меня есть и массив m x n. Я хочу передать каждый столбец этого массива в функцию, чтобы выполнить некоторые операции над всем столбцом. Как перебрать столбцы массива?

Например, у меня есть массив размером 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» на третьей.

64 голоса | спросил User 14 AMpSat, 14 Apr 2012 01:55:04 +040055Saturday 2012, 01:55:04

4 ответа


0

Просто переберите транспонированный массив:

for column in array.T:
   some_function(column)
ответил tillsten 14 AMpSat, 14 Apr 2012 01:59:04 +040059Saturday 2012, 01:59:04
0

Это должно дать вам начало

>>> for col in range(arr.shape[1]):
    some_function(arr[:,col])


[1 2 3 4]
[99 14 12 43]
[2 5 7 1]
ответил Abhijit 14 AMpSat, 14 Apr 2012 01:59:45 +040059Saturday 2012, 01:59:45
0
for c in np.hsplit(array, array.shape[1]):
    some_fun(c)
ответил user3061373 2 FebruaryEurope/MoscowbTue, 02 Feb 2016 00:08:53 +0300000000amTue, 02 Feb 2016 00:08:53 +030016 2016, 00:08:53
0

Для трехмерного массива вы можете попробовать:

for c in array.transpose(1, 0, 2):
    do_stuff(c)

Ознакомьтесь с документами о том, как . array.transpose работает. По сути, вы указываете, какое измерение нужно сместить. В этом случае мы перемещаем второе измерение (например, столбцы) в первое измерение.

ответил stevej 3 J000000Tuesday18 2018, 02:36:20

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132