2017-10-07 2 views
1

1つのnetcdfファイル内の変数の平均を計算する方法を知っています。しかし、私は40のnetcdfファイルを持っています。各ファイルには、レイヤーの高さを混合するための4000のデータ値があります。私は、複数のnetcdfファイルの平均ミキシングレイヤーの高さのリストを作成したいと思います。 最後に私のリストのサイズは40numpy.mean複数のnetcdfファイルからのミキシング層の高さ

がいくつかは、このリストを作成するために、Pythonコードで私を助けることができすべきですか? ありがとうございます。ここで

は、私は、単一のnetCDFファイルあなたが何らかの形でファイル名のリストを取得する必要があります

import numpy as np 
import netCDF4 

f = netCDF4.Dataset('niv.nc') 


#the shape of my data set is (5760,3) 
#5760 is the number of lists of time 
#In each list I have 3 mixing layer heights for 3 layers. 
#I'm going to call all the mixing layer height data for the first layer 

a= (f.variables['pbl'][:,0]) 
print (np.mean(a)) 
+0

あなたは 'open_mfdataset'で' xarray'を使用して見なければなりません。これは、netCDFファイル(特に複数のnetCDFファイル)での作業をずっと簡単にします。 –

+0

ああ、さらに詳しい答えが必要な場合は、[MCVE](https://stackoverflow.com/help/mcve)を含むように質問を編集する必要があります。 –

答えて

0

に1層の平均の混合層の高さを計算するために使用するコードです。ここで同じことを行うには

import numpy as np 
import netCDF4 
from glob import glob 

# you want to modify this to use your actual data directory 
filename_list = glob('/home/user/data_dir/*.nc') 

mean_list = [] 
for filename in filename_list: # make filename_list with something like os.listdir 
    with netCDF4.Dataset(filename) as ds: 
     mean_list.append(np.mean(ds.variables['pbl'][:, 0])) 

私はあなたが1つのフォルダにすべてのファイルを持っていると仮定しますと、他のnetCDFファイルはその中に存在しないfolder.To netCDF4を使用して、これを行うと、ファイルごとに別々の平均を必要とします xarrayで:

import xarray as xr 
from glob import glob 

# you want to modify this to use your actual data directory 
filename_list = glob('/home/user/data_dir/*.nc') 

mean_list = [] 
for filename in filename_list: # make filename_list with something like os.listdir 
    with xr.open_dataset(filename) as ds: 
     mean_list.append(np.mean(ds['pbl'][:, 0].values)) 

代わりに、各ファイルの平均を取得する、のは、最初の次元がtimeで言わせて、あなたはすべてファイル間の平均を取得したい場合。 xarrayでそれを行うには、あなたはとてもようopen_mfdatasetを使用することができます。

import xarray as xr 
import os 
from glob import glob 

# you want to modify this to use your actual data directory 
filename_list = glob('/home/user/data_dir/*.nc') 

ds = xr.open_mfdataset(filename_list, concat_dim='time') 
mean = np.mean(ds['pbl'][:, 0].values) 
+0

うまくいった。ジェレミー、どうもありがとう。どうもありがとう 。 –

+0

yep.already done。ありがとう –

関連する問題