2017-07-31 42 views
0

我有一個包含三個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

+0

這不是很清楚如何是'precip_subset'創建...它是通過放樣三個一維數組創建的?這應該會導致與您的使用示例「precip_subset [1,0,21])」相矛盾的二維數組,這表明「precipitation_subset」是一個3D數組。因此,請澄清你的'沉澱陣列'陣列的形狀。 –

+0

我會發布我的整個代碼。 –

+0

我認爲創建一個表示數據的numpy數據數組的小例子會更有幫助。你的例子並沒有顯示數據如何排列在你的文件中,並且需要熟悉'netCDF4'來回答你的問題。 –

回答

0

你可以試試以下內容(假設我從你的例子中得到了正確的想法):

data_low_indices1 = np.where((precip_subset > 0) & (precip_subset < 3.86667)) 

這將返回條件成立的一維索引數組的數組。您可能要轉這個名單:

data_low_indices2 = np.array(np.where((precip_subset > 0) & (precip_subset < 3.86667))).T 

然後,您可以:

for ind in data_low_indices2: 
    print(ind) 

如果你不想轉,然後做到這一點:

for ind in zip(*data_low_indices1): 
    print(ind) 
+0

非常感謝! –

相關問題