所以我正在处理大地测量数据,并使用掩膜来覆盖没有数据的区域。在这里,我刚刚遇到了一个问题,即试图用地球上不同点的不同时间序列数据来设计一个阵列。实际问题只是当我将单独的点阵列分配给更大的阵列时,掩膜消失了,而我甚至无法重新分配掩膜。
我创建了一个数组,加载数据(1°网格的每日数据,不包括最南端的30°),并将其转置,这样我就可以轻松地查看不同的点:
minmax_0_10T = np.ma.zeros((2,360,150,365))
with np.load("Data/Pythonarrays/1DEG_SM_minmax_SWI_001_SM0_10cm_2015.npz") as npz:
minmax_0_10T[0] = np.ma.MaskedArray(**npz).T
with np.load("Data/Pythonarrays/1DEG_SM_minmax_SWI_005_SM0_10cm_2015.npz") as npz:
minmax_0_10T[1] = np.ma.MaskedArray(**npz).T
我有2个要绘制的数据集和4个要查看的不同点
spots_1deg = [[41, 210], [29, 119], [108, 196], [117, 256]]
minmax_0_10_spots = np.ma.zeros((2,4,365))
"""Create array of minmax and gldas spotdata for choice of SWI layer"""
for i in range(len(spots_1deg)):
for layer_gldas in range(len(gldas_smT)):
gldas_spots[layer_gldas][i] = gldas_smT[layer_gldas][spots_1deg[i][1]][spots_1deg[i][0]]
"""now all different gldas layers of minmax fitting"""
minmax_0_10_spots[0][i] = minmax_0_10T[0][spots_1deg[i][1]][spots_1deg[i][0]]
minmax_0_10_spots[1][i] = minmax_0_10T[1][spots_1deg[i][1]][spots_1deg[i][0]]
但是,如果直接比较minmax_0_10T[0][spots_1deg[i][1]][spots_1deg[i][0]]
和minmax_0_10_spots[0][i]
,就会发现minmax_0_10_spots
数组不再包含掩码(因为掩码到处都是False
)。这是如何发生的,为什么会发生?分配每个掩码也不起作用,最后我不得不将minmax_0_10_spots
定义为list并填充它,但是也不能将其转换为数组,因为那样面具就会消失。
我已经试着查看了np.ma文档,但我一定是读多了一些东西或者不理解...
1条答案
按热度按时间zwghvu4y1#
由于数组来自
load
,我无法测试你的代码。如果你构造一些更小的东西会更容易--可以复制粘贴。下面是对一维数组的一个简单测试: