我試圖從netCDF4文件中提取數據。這些包含作爲Numpy庫的一部分的「MaskedArrays」。在Numpys Masked陣列中獲取非屏蔽值
我的數據包括:緯度,經度,天和值(在不同的文件分開)。 此外還有一個掩碼,顯示哪些緯度/經度因各種原因(無測量或其他原因)無效。
我的數據看起來像這樣(的屏蔽數據):
masked_array(
data =
[[[-- -- -- ..., -- -- --]
...,
[-- -- -- ..., -- -- --]]],
mask =
[[[ True True True ..., True True True]
...,
[ True True True ..., True True True]]],
fill_value = 32767)
我在尋找一個numpy的方法(或類似),其只能提取未屏蔽這些值。理想情況下,只需從數據集中刪除所有無效的條目。 我發現.compressed
,但它給了一維數組。從第三維來看,這是相當多的信息損失,因爲我不知道這些值在哪裏。
另外我試過nonzero = the_array['one of the values'][0].nonzero()
。 這給了我一個雙數組的經緯度值,但之後,我仍然需要訪問這些 - 這是很慢的。不幸的是,在知道如何訪問所有這些日期之後,我需要在每個具有〜1500×700×365數據點的30 * 6個文件上執行此操作:D。
all_days = [(x, rhstmax['stuff'][x][24][1288]) for x in range(366)]
# represents just for lat:24,lon:1288 all days. First 20:
all_days[:20] =
[(0, 15.799999),
(1, 16.199999),
(2, 17.4),
(3, 13.2),
(4, 10.8),
(5, 11.3),
(6, 15.299999),
(7, 16.299999),
(8, 14.099999),
(9, 10.8),
(10, 9.5),
(11, 9.0999994),
(12, 11.9),
(13, 9.1999998),
(14, 31.0),
(15, 49.0),
(16, 8.6999998),
(17, 10.0),
(18, 44.099998),
(19, 30.699999)]
# ... takes forever :(
理想情況下,剪切所有無效條目後,輸出的結構是什麼?您是否在[僅訪問有效條目](https://docs.scipy.org/doc/numpy/reference/maskedarray.generic.html#accessing-only-the-valid-entries)上檢查了此概述? –
壓縮的返回1d,因爲每行或列的數值不一致。填充是「去除」蒙版值的另一種方式。 – hpaulj