我想根據兩個其他數組的條件掩蓋多個位置中的單個數組。當我這樣做,然後繪製原始數組和數組時,它將被屏蔽,數據不會在正確的位置被一致掩蓋。下面是一個工作示例代碼,它重現問題以及結果圖。多次掩蓋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值範圍。 –