簡體   English   中英

使用間隔掩蓋numpy數組

[英]Mask numpy array using intervals

我試圖使用帶范圍的掩碼文件掩蓋numpy數組的某些部分,我無法弄清楚如何有效地這樣做。 我有一個包含數千個值的兩個數組(時間和數據),然后是一個包含開始和停止時間的掩碼文件。 我希望有一個簡單的方法來掩蓋任何start和stop值之間的數組值。 下面是一些偽代碼,以幫助概念化我正在嘗試做的事情。

# 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])]

顯然,這不起作用,因為時間和面具的長度不一樣。

這樣的事情可能嗎? 任何幫助將不勝感激!

給定一個數組:

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

以及第二個下限和上限( lu )的數組,

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

迭代bounds數組並根據邊界(重新)屏蔽數據數組

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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM