【问题标题】:Maximum and minimum values numpy Array最大值和最小值 numpy 数组
【发布时间】:2017-12-09 20:23:14
【问题描述】:

如果我有一个像

这样的数组
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

【问题讨论】:

    标签: python numpy


    【解决方案1】:

    我不太明白sn-p的代码。回答您的第一个问题:

    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)
    

    【讨论】:

    • 谢谢!!作品。我编辑了答案并添加了一份请愿书,如果您不介意在最大值和最小值之间取 10 个值,则在中间取 10 个最接近的值。
    • 我在中间取 10 个值的代码不起作用。你的是的。
    • 我如何检索二维数组中的位置?被掩盖的元素
    • 你给我的最后一个代码 _f_data= ma.masked_where( ((zsorted[sorted.size/2+4]) ) & ((z>sorted[10]) & (z
    • 当对带有掩码的数组应用排序时,在_sorted[-10]元素中给我“--”
    【解决方案2】:

    如果您只需要对数组中的少数项目进行排序,那么在 numpy >= 1.8 的情况下,使用np.partition 比使用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
    

    【讨论】:

    • 你好,谢谢。我如何返回被屏蔽元素的值、索引
    猜你喜欢
    • 2021-07-31
    • 2012-04-13
    • 1970-01-01
    • 1970-01-01
    • 2017-02-13
    • 2012-02-11
    • 2014-06-28
    • 2020-08-23
    • 1970-01-01
    相关资源
    最近更新 更多