Python 最大值和最小值numpy数组

Python 最大值和最小值numpy数组,python,numpy,Python,Numpy,如果我有一个数组 z = np.random.random((41,61,106)) y,x=np.mgrid[slice(0,61, 1),slice(0,106, 1)] z=z[_num,x,y]] 我可以捕获10个最大值和10个最小值,并屏蔽数组z中的其余值 可以取最大值和最小值的中间值,再加上10个值 middle=sorted[(len(sorted)/2)-5:(len(sorted)/2)+5] print middle mask = ma.masked_inside(

如果我有一个数组

z = np.random.random((41,61,106))
y,x=np.mgrid[slice(0,61, 1),slice(0,106, 1)] 
z=z[_num,x,y]]
我可以捕获10个最大值和10个最小值,并屏蔽数组z中的其余值

可以取最大值和最小值的中间值,再加上10个值

 middle=sorted[(len(sorted)/2)-5:(len(sorted)/2)+5]
 print middle
 mask = ma.masked_inside(z,sorted[10],sorted[-10],middle)
 print mask

我不太理解代码片段。要回答您的第一个问题:

import numpy as np
import numpy.ma as ma

z = np.random.random((10,10))
sorted = np.sort(z,axis=None)
mask = ma.masked_inside(z,sorted[10],sorted[-10])
关于你的第二个问题,你也可以考虑连接条件

ma.masked_where( ((z<sorted[sorted.size/2-5]) |
                  (z>sorted[sorted.size/2+4])) &
                 ((z>sorted[10]) & (z<sorted[-10])),z)
ma.masked_其中((zsorted[sorted.size/2+4]))&

((z>sorted[10])&(z如果只需要对数组中的几个项进行排序,numpy>=1.8,则使用它比
np.sort
更有效:

In [6]: z = np.random.rand(61, 106)

In [7]: %timeit np.sort(z, axis=None)
1000 loops, best of 3: 413 µs per loop

In [8]: %%timeit
    ...: n = z.size
    ...: y = np.partition(z, (10, n//2 - 5, n//2 + 5, -10), axis=None)
    ...: y[:10].sort()
    ...: y[n//2 - 5:n//2 + 5].sort()
    ...: y[-10:].sort()
    ...: 
10000 loops, best of 3: 143 µs per loop

谢谢!!我编辑了一个答案,并包含了一个请愿书,如果你不介意在Max和min之间取10个值,中间取10个最接近。我的代码在中间取10个值。你的是的。我怎样才能检索2维数组中的位置?元素掩码最后一个代码。ma.masked_其中((zsorted[sorted.size/2+4])&((z>sorted[10])&(zsorted[10])当对带有掩码的数组应用排序时,give me in_sorted[-10]元素“-”您好,谢谢。我如何返回被屏蔽元素的值和索引