对于维度n
的numpy数组,我想将np.nanmax()应用于n-1
维度,生成一维最大值数组,忽略设置为{{1}的所有值}。
np.nan
制造
q = np.arange(5*4*3.).reshape(3,4,5) % (42+1)
q[q%5==0] = np.nan
如果我提前知道我想使用最后一个轴作为剩余维度,我可以使用array([[[ nan, 1., 2., 3., 4.],
[ nan, 6., 7., 8., 9.],
[ nan, 11., 12., 13., 14.],
[ nan, 16., 17., 18., 19.]],
[[ nan, 21., 22., 23., 24.],
[ nan, 26., 27., 28., 29.],
[ nan, 31., 32., 33., 34.],
[ nan, 36., 37., 38., 39.]],
[[ nan, 41., 42., nan, 1.],
[ 2., 3., 4., nan, 6.],
[ 7., 8., 9., nan, 11.],
[ 12., 13., 14., nan, 16.]]])
中的-1
功能执行此操作:< / p>
.reshape()
产生我想要的结果:
np.nanmax(q.reshape(-1, q.shape[-1]), axis=0)
但是,假设我不提前知道哪一个轴我不想应用最大值?假设我从array([ 12., 41., 42., 38., 39.])
维度开始,并希望它应用于除n=4
轴之外的所有轴,可能是0,1,2或3?必须实际使用条件if-elif-else?
是否有某种东西可以像假设的m
一样工作?
答案 0 :(得分:1)
axis
的{{1}}参数可以是计算最大值的轴的元组。在您的情况下,您希望该元组包含除nanmax
之外的所有轴。这是你可以做到的一种方式:
m