除了一个轴之外的所有np.nanmax() - 这是最好的方法吗?

时间:2016-07-21 07:35:50

标签: python numpy

对于维度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一样工作?

1 个答案:

答案 0 :(得分:1)

axis的{​​{1}}参数可以是计算最大值的轴的元组。在您的情况下,您希望该元组包含除nanmax之外的所有轴。这是你可以做到的一种方式:

m