我有一個包含三個1D numpy數組的數據集precip_subset
。我合併了31個數據集以創建precip_subset
:數據集中的第一個numpy arrray代表日,第二個數組代表經度,第三個數組代表緯度。在數據集的每個位置有一個獨特的降水值;例如,print(precip_subset[1, 0, 21])
會給我一個值1.05
。在具有三個1D numpy數組的數據集中獲取值的位置
在precip_subset
,我只想要特定的降水值。所以我只限於像這樣的數據集:
data_low = precip_subset[(precip_subset > 0) & (precip_subset < 3.86667)]
在此之後,我試着這樣做:
for val in data_low:
if val < 1:
print(precip_subset.tolist().index(val))
我所試圖做的就是在原始數據集的值的位置,precip_subset
。但是,我收到了一個錯誤The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
。任何人都可以解釋我如何從precip_subset
獲得價值的位置?
編輯:這裏是precip_subset是如何創建的:
from netCDF4 import Dataset
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
data_path = r"C:\Users\matth\Downloads\TRMM_3B42RT\3B42RT_Daily.201001.7.nc4"
f = Dataset(data_path)
latbounds = [ -31 , -19 ]
lonbounds = [ 131, 146 ] # degrees east ?
lats = f.variables['lat'][:]
lons = f.variables['lon'][:]
# latitude lower and upper index
latli = np.argmin(np.abs(lats - latbounds[0]))
latui = np.argmin(np.abs(lats - latbounds[1]))
# longitude lower and upper index
lonli = np.argmin(np.abs(lons - lonbounds[0]))
lonui = np.argmin(np.abs(lons - lonbounds[1]))
precip_subset = f.variables['precipitation'][ : , lonli:lonui , latli:latui ]
變量 「沉澱」 是從原始數據集r"C:\Users\matth\Downloads\TRMM_3B42RT\3B42RT_Daily.201001.7.nc4"
另外,形狀和precip_subset分別是(31, 60, 48)
大小和89280
這不是很清楚如何是'precip_subset'創建...它是通過放樣三個一維數組創建的?這應該會導致與您的使用示例「precip_subset [1,0,21])」相矛盾的二維數組,這表明「precipitation_subset」是一個3D數組。因此,請澄清你的'沉澱陣列'陣列的形狀。 –
我會發布我的整個代碼。 –
我認爲創建一個表示數據的numpy數據數組的小例子會更有幫助。你的例子並沒有顯示數據如何排列在你的文件中,並且需要熟悉'netCDF4'來回答你的問題。 –