我想根据两个其他数组的条件掩盖多个位置中的单个数组。当我这样做,然后绘制原始数组和数组时,它将被屏蔽,数据不会在正确的位置被一致掩盖。下面是一个工作示例代码,它重现问题以及结果图。多次掩盖Numpy数组会产生错误的结果
import numpy as np
import matplotlib.pyplot as plt
f1 = np.random.randint(51, size=150)
lt_vals = np.arange(0,25,1)
alt_vals = np.arange(0,15,1)
alt = np.tile(alt_vals,10)
lt = np.tile(lt_vals, 6)
x_vals = range(len(f1))
f1m = np.ma.masked_where((lt>5) & (lt<20), f1)
f1am = np.ma.masked_where(alt>5, f1m)
variables = [f1am, alt, lt]
ylabels = ['Function', 'Sim Alt', 'Sim Time']
number_of_subplots= len(variables)
plt.figure(figsize = (12,12))
for i,j,k in zip(range(number_of_subplots), variables, ylabels):
ax1 = plt.subplot(number_of_subplots,1,i+1)
ax1.plot(x_vals,j)
ax1.set_ylabel(k)
plt.show()
正如可以看到,在顶部面板中的数据应当被任何地方所掩蔽的第二面板是大于5且在任何地方第三面板是大于5但小于20。第二显示在顶部面板中的一组数据显然显示在大于5的小数,这正是我的问题。任何人有任何猜测如何从中获得正确的行为?谢谢!
- 将会
您是否知道第一个绘图与其他绘图在不同的水平刻度上?对应于第一个图的一部分的“alt”数据不直接在该部分之下。 – user2357112
你能解释一下你的问题吗,或者通过例子或其他方式 – ChaosPredictor
我知道,但也许这是我的问题。如果我测试len(f1am)== len(alt)== len(lt)我变成了True。那么为什么第一块地块会与其他地块相抵消呢?他们正在密谋vs相同的x值范围。 –