行列を反復処理して、各行に関数を適用できるようにしたいと思います。 Numpy行列に対してどうすればよいですか?
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]
確かにより多くの情報を提供する必要がありますが、各行を通過しようとしている場合は、forループで反復できます。
import numpy
m = numpy.ones((3,5),dtype='int')
for row in m:
print str(row)
マルチプロセスを使用してnumpy配列の各行を処理しようとする場合の私の見解は次のとおりです。
from multiprocessing import Pool
import numpy as np
def my_function(x):
pass # do something and return something
if __== '__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」関数を使用して、配列の各行に反復子を作成しました。
たぶん反復可能なものを作成する方が良いでしょう。