Starting with a linspace
t = np.linspace(0,10, 100)
and an array
a = np.array([1,2,44,2, 13,...])
I would like to get an array b, of the same length of the linspace whose elements are the array a raised to the power of the linspace elements (without using a for-loop). So you'd have something like
b[0]=np.array([1^t[0], 2^t[0], 44^t[0],...])
b[1]=np.array([1^t[1], 2^t[1], 44^t[1],...])
etc for the whole linspace.
Since I don't want to use a for-loop, is it possible to use np.apply_along_axis to perform a function on every element of t that gives me the final b I want? I've been struggling to do this, I think because I must just not understand how np.apply_along_axis works entirely.
Use broadcasting:
If you raise an array
aof shape(N,)or(1, N)(a row vector) to an arraytof shape(M, 1)(a column vector), numpy automatically broadcasts their shapes and returns an array of shape(M, N), where thei, jth element of that array isa[j]**t[i]. To represent yourtarray as a column vector, index it ast[:, None], which adds a dimension after the current one.