[英]Maximum and minimum values numpy Array
如果我有一個像
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)
如果您只需要對數組中的一些項目進行排序,並且numpy> = 1.8,則使用np.partition
比np.sort
效率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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.