I have an array X and I want to apply a function f to all the rows of X:
# silly example
X = numpy.array([[1, 2, 3, 4, 5],
[6, 7, 8, 9, 0]], 'i')
def f(row): return sum(row)
y = numpy.vectorize(f, 'i')(rows(X))
Now, y should be array([15,30], 'i'). Which method or slicing magic will implement rows in the most efficient way?
Advertisement
Answer
NumPy implements the concept of “action over a particular axis”. The general function is numpy.apply_along_axis():
>>> numpy.apply_along_axis(sum, 1, X) array([15, 30])
(where sum can of course be replaced by anything).