【问题标题】:Mask numpy array using intervals使用间隔屏蔽 numpy 数组
【发布时间】:2014-02-21 04:47:30
【问题描述】:

我正在尝试使用带有范围的掩码文件来屏蔽 numpy 数组的某些部分,但我无法弄清楚如何有效地做到这一点。我有一个包含数千个值的两个数组(时间和数据),然后是一个包含开始和停止时间的掩码文件。我希望有一个简单的时间来掩盖任何起始值和终止值之间的数组值。下面是一些伪代码来帮助概念化我正在尝试做的事情。

# the mask file is two-column with start time and stop time
mask = np.loadtxt(maskfile)

time, data = np.loadtxt(datafile, unpack=True)

data = data[(time > mask[:,0]) & (time < mask[:,1])]

显然,这是行不通的,因为时间和掩码的长度不同。

这样的事情可能吗?任何帮助将不胜感激!

【问题讨论】:

    标签: python arrays numpy mask


    【解决方案1】:

    给定一个数组:

    In [1]: x = np.arange(100).reshape(10, 10)
    

    以及第二个下限和上限数组(lu),

    In [2]: y = np.array([[6, 11], [41, 47], [85, 98]])
    

    遍历边界数组并根据边界(重新)屏蔽数据数组

    In [3]: for l, u in y:
      ....:     x = np.ma.masked_where((x > l) & (x < u), x)
      ....: 
    
    In [4]: x
    Out[4]: 
    masked_array(data =
     [[0 1 2 3 4 5 6 -- -- --]
     [-- 11 12 13 14 15 16 17 18 19]
     [20 21 22 23 24 25 26 27 28 29]
     [30 31 32 33 34 35 36 37 38 39]
     [40 41 -- -- -- -- -- 47 48 49]
     [50 51 52 53 54 55 56 57 58 59]
     [60 61 62 63 64 65 66 67 68 69]
     [70 71 72 73 74 75 76 77 78 79]
     [80 81 82 83 84 85 -- -- -- --]
     [-- -- -- -- -- -- -- -- 98 99]],
                 mask =
     [[False False False False False False False  True  True  True]
     [ True False False False False False False False False False]
     [False False False False False False False False False False]
     [False False False False False False False False False False]
     [False False  True  True  True  True  True False False False]
     [False False False False False False False False False False]
     [False False False False False False False False False False]
     [False False False False False False False False False False]
     [False False False False False False  True  True  True  True]
     [ True  True  True  True  True  True  True  True False False]],
           fill_value = 999999)
    

    【讨论】:

    • 谢谢,比尔。我试图避免这样做,因为我希望有一个内置的 Numpy 操作。无论如何,感谢您的确认!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-18
    • 1970-01-01
    • 2011-08-11
    • 2017-08-19
    • 2021-01-14
    相关资源
    最近更新 更多