Suppose I have a NumPy 1d-array a:
a = np.array([1, 2, 3])
and I have a function foo:
def foo(x, p):
...
return y
I want to apply foo on a with, say, p from 1 to 3 to make a 2d-array.
Or just:
>>> a[:, None] ** np.arange(1, 4)
array([[ 1, 1, 1],
[ 2, 4, 8],
[ 3, 9, 27]], dtype=int32)
>>>
With a function:
def foo(x, p):
return x ** p
np.apply_along_axis(lambda x: foo(x, np.arange(1, 4)), 1, a[:, None])
array([[ 1, 1, 1],
[ 2, 4, 8],
[ 3, 9, 27]], dtype=int32)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With