Подтвердить что ты не робот

Итерация по строкам матрицы Numpy для применения каждой функции?

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

4b9b3361

Ответ 1

Используйте numpy.apply_along_axis(). Предполагая, что ваша матрица 2D, вы можете использовать как:

import numpy as np
mymatrix = np.matrix([[11,12,13],
                      [21,22,23],
                      [31,32,33]])
def myfunction( x ):
    return sum(x)

print np.apply_along_axis( myfunction, axis=1, arr=mymatrix )
#[36 66 96]

Ответ 2

В то время как вы обязательно должны предоставить дополнительную информацию, если вы пытаетесь пройти через каждую строку, вы можете просто перебирать цикл for:

import numpy
m = numpy.ones((3,5),dtype='int')
for row in m:
  print str(row)

Ответ 3

Здесь мой ответ, если вы хотите попробовать использовать многопроцессы для обработки каждой строки массива numpy,

from multiprocessing import Pool
import numpy as np

def my_function(x):
    pass     # do something and return something

if __name__ == '__main__':    
    X = np.arange(6).reshape((3,2))
    pool = Pool(processes = 4)
    results = pool.map(my_function, map(lambda x: x, X))
    pool.close()
    pool.join()

pool.map взять в функции и итерабельный.
Я использовал функцию "map" для создания итератора над каждой строкой массива. Может быть, лучше создать итерируемый, хотя.