Numpy different elements between two arrays
Question:
I need help. I have this array from a table:
lycop = np.array([[14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
[1, 1, 8, 24, 48, 58, 35, 16, 8, 1]])
lycop
array([[14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
[ 1, 1, 8, 24, 48, 58, 35, 16, 8, 1]])
I had to calculate media, var and std.
lycop_media = (lycop[0]*lycop[1]).sum()/lycop[1].sum()
lycop_media
18.83
lycop_std = lycop_var**1/2
lycop_std
1.09555
so far so good…
Then I need 3 different arrays:
a1 : values under the media – std < −
a1 = lycop[0][(lycop[0] < (lycop_media - lycop_std))]
a1
array([14, 15, 16, 17])
a2 : values over media + std > +
a2 = lycop[0][(lycop[0] > (lycop_media + lycop_std))]
a2
array([20, 21, 22, 23])
a3 : values between both a1 and a2 so − < < +
and here I just lost it.
My attempts:
a3 = [np.where((lycop[0] < lycop_media - lycop_std) & (lycop[0] < lycop_media + lycop_std))]
a3
[(array([0, 1, 2, 3]),)]
which is obviously wrong.
a3= [((lycop_media - lycop_std) < 18 & 19 < (lycop_media + lycop_std))]
a3
[True]
I know is true but I need to get and array with the numbers, something like
array([18, 19])
Some ideas?
Answers:
It’s just an extension of what you did for a1 and a2, but you have the < and > signs confused for one half.
a3 = lycop[0](lycop[0] >= lycop_media - lycop_std) & (lycop[0] <= lycop_media + lycop_std)]
I need help. I have this array from a table:
lycop = np.array([[14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
[1, 1, 8, 24, 48, 58, 35, 16, 8, 1]])
lycop
array([[14, 15, 16, 17, 18, 19, 20, 21, 22, 23],
[ 1, 1, 8, 24, 48, 58, 35, 16, 8, 1]])
I had to calculate media, var and std.
lycop_media = (lycop[0]*lycop[1]).sum()/lycop[1].sum()
lycop_media
18.83
lycop_std = lycop_var**1/2
lycop_std
1.09555
so far so good…
Then I need 3 different arrays:
a1 : values under the media – std < −
a1 = lycop[0][(lycop[0] < (lycop_media - lycop_std))]
a1
array([14, 15, 16, 17])
a2 : values over media + std > +
a2 = lycop[0][(lycop[0] > (lycop_media + lycop_std))]
a2
array([20, 21, 22, 23])
a3 : values between both a1 and a2 so − < < +
and here I just lost it.
My attempts:
a3 = [np.where((lycop[0] < lycop_media - lycop_std) & (lycop[0] < lycop_media + lycop_std))]
a3
[(array([0, 1, 2, 3]),)]
which is obviously wrong.
a3= [((lycop_media - lycop_std) < 18 & 19 < (lycop_media + lycop_std))]
a3
[True]
I know is true but I need to get and array with the numbers, something like
array([18, 19])
Some ideas?
It’s just an extension of what you did for a1 and a2, but you have the < and > signs confused for one half.
a3 = lycop[0](lycop[0] >= lycop_media - lycop_std) & (lycop[0] <= lycop_media + lycop_std)]