使用else语句Python定义变量和数组

2024-07-02 10:16:52 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试对netCDF文件中的大型数据集应用质量控制过滤器。在netCDF中有一个称为nstorms的维度,其中有lat、lon、date和其他与每个nstorm值相关联的变量(其中nstorms的范围从0到230348)。为了应用质量控制,我目前正在使用带有if和else语句的for循环:

for i in range(len(lowerBound)):
  if min37[i] >= lowerBound[i] and min37[i] < upperBound[i]:
    nstorms_bad = i
    print nstorms_bad
  else:
    nstorms_good =  #everything else - all the other 'i' values
    print nstorms_good
    #Put values for nstorms_good into an array

lowerBound的大小与nstorms相同,并且由于nstorms和lowerBound都从零开始,因此为nstorms_bad = i返回的值与netCDF中的坏数据匹配(即,为nstorms_bad返回的前几个值是306、408、486,这些值与netCDF文件中与nstorms 306、408和486相关联的错误数据匹配)。你知道吗

我遇到的问题是,我需要好的nstorms值,我需要将它们放入一个数组中,这样我就可以返回到netCDF文件中,并将nstorms的每个值与其各自的变量数据(lat、lon、time等)关联起来。如果我设置nstorms_good = i,那么我只得到一个所有i值的列表,而不应用任何质量控制?定义nstorms_good以便它包含所有i值(因为使用i与实际的nstorms匹配)的最佳方法是什么?如何将所有这些值放入一个数组中?将nstorms_bad设置为数组,然后为nstorms_good创建一个包含数字0到230348的新数组,然后比较这两个数组是否更容易?你知道吗


Tags: 文件数据forif质量netcdf数组else
2条回答

你似乎想要的是两个列表,其中一个有你的风暴数据列表中与坏风暴相关的所有指数,另一个是与好风暴相关的指数。这就像

god = []
bad = []
for i in range(len(lowerBound):
  if min37[i] >= lowerBound[i] and min37[i] < upperBound:
    bad.append(i)
  else:
    good.append(i)

现在您可以在这两个列表上循环并获得适当的引用。你知道吗

看起来您需要稍后对所有nstorms_good进行迭代。因此,任何容器都可以:listdict甚至set。你知道吗

使用dict将允许您存储有关每个nstorms_good的一些附加数据,但由于您确实只需要索引,因此我将使用list:

nstorms_good = []
for i in range(len(lowerBound)):
  if min37[i] >= lowerBound[i] and min37[i] < upperBound[i]:
    ...
  else:
    nstorms_good.append( i )

# process
for nstorm in nstorms_good:
    ...

相关问题 更多 >