我有一個三維陣列(可以認為是時間、y和x),我試圖屏蔽掉0.4和0.6之間的值,以顯示一個等高線圖,所有0.4到0.6之間的值都是白色的(或者基本上被屏蔽掉)。
arr_3d = np.random.rand(5,10,20)
plt.pcolormesh(arr_3d[2] )
plt.colorbar()
下面是我試圖掩蓋.4和.6之間的任何數值:
# mask out or turn to zero values that are between .4 and .6
attempt_to_mask = np.where((arr_3d > .4) & (arr_3d < .6), arr_3d == 0)
---------------------------------------------------------------------------
ValueError 回溯(最近一次呼叫)
/tmp/ipykernel_562130/1333698014.py in<module>
7 # mask out or turn to zero values that are between .4 and .6
8
----> 9 attempt_to_mask = np.where((arr_3d > .4) & (arr_3d < .6),arr_3d ==0)
<__array_function__ internals> in where(*args, **kwargs)
ValueError: x 或者都不應該給出和y的。
這個錯誤是什么意思?我怎樣才能屏蔽掉3d陣列(大小為5,10,20)中每個時間步長的.4和.6之間的所有數值呢?
uj5u.com熱心網友回復:
也許你想要這樣的東西?
arr_3d[(arr_3d > .4) & (arr_3d < .6) ] = 0
注意:在應用上述代碼之前,你可能需要對原始陣列進行復制。
uj5u.com熱心網友回復:
剛剛發現了另一個替代方案(如果你想讓它們被屏蔽而不是變成零的話):
masked = ma.masked_where((arr_3d > .4) & (arr_3d < .6), arr_3d)
上面的答案也很好用 :)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/309453.html
標籤:

