I am trying to write a code to conduct a double summation (see pic)
in which; M is the subjects, N is the Trials, Yijt is the measured wave form data (3d array)
so far I have; Given Y is the data arranged as Y[subjects, trials, time]
# ranges:
I = len(Y)
J = len(Y[0])
Y_i_vals = 0
for i in range(M):
for j in range(N):
Y_i_vals = Y_i_vals +Y[i][j]
Yt = (1.0/(M*N)) * Y_i_vals
this doesnt seem the most effective way to do this, nor am i certain it is giving the correct result.
If you're using numpy
just do
np.mean(Y)
Also, it's good to add sample input and expected output data to your question.
If you want means for each t
you can do np.mean(np.mean(a, axis=0), axis=0)
, or as noted by @ophion you can shorten this to np.mean(a, axis=(0, 1))
in newer (1.71 and on) versions of NumPy.
To add a more general answer to your question:
You can code a double summation with the help of python list comprehension.
Yt = (1.0/(M*N)) * sum([Y[i][j] for i in range(M) for j in range(N)])
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