2017-08-04 57 views
0

有人可以解释为什么我收到此错误吗?错误:预计会出现缩进块

from netCDF4 import Dataset 
import numpy as np 
import matplotlib.pyplot as plt 
from mpl_toolkits.basemap import Basemap 

datapath = r"C:\Users\matth\Downloads\MYD04_L2_v6.0_110E155E_045S010S.A2010_calcv2_dod_flg1.nc" 
f = Dataset(datapath) 

for i in range(0, 30): 
    dod = f.variables['dod_modis_flg1'][i] 
    dod[dod == 0] = np.nan 

    def nan_if(arr, value): 
     return np.where(arr == value, np.nan, arr) 
    mean = np.nanmean([nan_if(dod, -9.99)]) 
    print(mean) 
    #print(np.nanmax(dod)) 
    #print(np.nanmin([nan_if(dod, -9.99)])) 

    dod_high = dod[(dod > mean) & (dod != 0)] 
    anomalies = [] 
    for val in dod_high: 
     if val > mean: 
      #print(anomalies) 

    dod_high_indices1 = np.where((dod > mean) & (dod != 0)) 
    dod_high_indices2 = np.array(np.where((dod > mean) & (dod != 0))).T 
    anomalies_ind = [] 
    for ind in dod_high_indices2: 
     anomalies_ind.append(ind) 
     print(np.asarray(anomalies_ind)) 

OUTPUT:

%run "C:/Users/matth/dod_anomalies.py" 
    File "C:\Users\matth\dod_anomalies.py", line 26 
    dod_high_indices1 = np.where((dod > mean) & (dod != 0)) 
^
IndentationError: expected an indented block 

这在我看来,我的代码的缩进是正确的...由于某种原因,我不断收到此错误。

+1

你应该只是取消'打印(异常)' – PRMoureu

回答

2

if需要一个身体,在

for val in dod_high: 
    if val > mean: 
     #print(anomalies) 

评论不算数。您可以使正文pass或注释掉if(或整个循环),但在上下文中,您似乎可能会遇到更严重的问题。即使没有注释,那print只会打印[]

4

Python是

if val > mean: 

它忽略了注释块之后期待着什么。如果你有这样一个空的if语句,只需传入,python知道它在那里。

if val>mean: 
    #print(anomalies) 
    pass 
+0

现在我觉得非常愚蠢。谢谢。 –