我有一个形状为(3,16,110)
的NumPy数组。
我想获取每个(16,110)
数组中的每个元素,并将其与其余2个(16,110)
数组中的其他两个元素取平均。结果数组的尺寸应为(16,110)
。
例如,用较小的(2,3)
数组显示我的意思:
a= [(0, 2, nan),
(1, 3, 1) ]
b = [(1, 3, 2),
(3, 4, 7)]
c = [(nan, 5, 2),
(1, 3, 2)]
我想生成一个尺寸为(2,3)
的数组,该数组首先取(0,1,nan)
的平均值,然后移至下一个元素(2,3,5)
等...
那么使用nan
并考虑np.nanmean(3darray, axis=0)
的正确方法是吗?
我不太了解axis
关键字,如果有人可以解释:)
答案 0 :(得分:0)
尝试一下:
import numpy as np
a= [(0, 2, np.NaN),
...: (1, 3, 1) ]
...:
...: b = [(1, 3, 2),
...: (3, 4, 7)]
...:
...: c = [(np.NaN, 5, 2),
...: (1, 3, 2)]
d=[a,b,c,b]
np.array(d).shape
>>(4, 2, 3)
np.nanmean(d,axis=0) #removes the first axis
>>array([[0.66666667, 3.25 , 2. ],
[2. , 3.5 , 4.25 ]])
np.nanmean(d,axis=0).shape
>>(2, 3)
np.nanmean(d,axis=1) #removes the second axis
>>array([[0.5, 2.5, 1. ],
[2. , 3.5, 4.5],
[1. , 4. , 2. ],
[2. , 3.5, 4.5]])
np.nanmean(d,axis=1).shape
>>(4, 3)
np.nanmean(d,axis=2) #removes the third axis
>>array([[1. , 1.66666667],
[2. , 4.66666667],
[3.5 , 2. ],
[2. , 4.66666667]])
np.nanmean(d,axis=2).shape
>>(4, 2)
axis关键字告诉您将平均哪个轴。换句话说,该轴将通过平均移除。
因此,您特别需要的是np.nanmean(d,axis=0)
。