neu*_*der 4 python performance numpy data-science masked-array
我正在尝试从 netCDF4 文件中提取数据。这些包含“MaskedArrays”,它们是 Numpy 库的一部分。
我的数据包含:latitude、longitude、day和values(分隔在不同的文件中)。此外,还有一个显示哪些纬度/经度由于各种原因(没有测量或其他原因)无效的掩码。
我的数据看起来像这样(对于屏蔽数据):
masked_array(
data =
[[[-- -- -- ..., -- -- --]
...,
[-- -- -- ..., -- -- --]]],
mask =
[[[ True True True ..., True True True]
...,
[ True True True ..., True True True]]],
fill_value = 32767)
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种 numpy 方法(或类似方法),它只能提取这些未被屏蔽的值。理想情况下,只需从数据集中删除所有无效条目即可。我找到了.compressed,但它返回了一个一维数组。从第三维来看,这是相当大的信息损失,因为我不知道这些值在哪里。
另外我试过了nonzero = the_array['one of the values'][0].nonzero()。这给了我一个带有纬度/经度值的双数组,但之后我仍然必须访问这些 - 这很慢。不幸的是,在知道如何访问所有这些日期后,我需要在 30*6 个文件上执行此操作,每个文件具有 ~1500×700×365 个数据点: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 :(
Run Code Online (Sandbox Code Playgroud)
小智 5
要在 Python 中获取非屏蔽数据,您可以使用该.mask工具
假设您有以下数据集:
data = [[0.0 1.0 -- --]
[2.0 3.0 -- --]]
Run Code Online (Sandbox Code Playgroud)
同时获得所有这些都是指数可以得到非屏蔽数据False由data.mask命令。
data = data[data.mask == False]
Run Code Online (Sandbox Code Playgroud)
请注意,这将为您提供所有输入的一维数组
data -> [0.0 1.0 2.0 3.0]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6544 次 |
| 最近记录: |