簡體   English   中英

將CSV文件中的數據添加到netCDF文件

[英]Add data in csv file to netCDF file

我有一個包含兩列的csv文件-風速和cp(風力發電機功率系數)。 我還擁有各種netCDF文件(每個文件代表1年),每個網格點的風速為3小時。 (lat 424,lon 412)。

我想在每個網格點將相應的cp值添加到netCDF文件,即,將cp作為變量添加到netCDF文件,這在R語言中比較理想,但我也有使用python的經驗。

您不能通過簡單的插值來獲得給定(1)V vs cp曲線(CSV文件)和(2)NetCDF文件中的速度的cp值嗎? 簡單的插值在Python中非常快(我猜在R中也是如此),並且(幾乎..)肯定比自己實現某些東西快。

如果您的CSV文件中的V vs cp曲線非常詳細,那么如果沒有更好的替代方法,您可以擺脫像最近鄰插值一樣簡單的問題。 例如:

import numpy as np
import matplotlib.pylab as pl
from scipy import interpolate

# Given combinations of velocity and cp (from CSV file):
V_csv  = np.linspace(0,10,4)
cp_csv = V_csv**2.

# Random velocities in the range {0..10} (from NetCDF file):
V = np.random.random(5)*10

# Create linear, nearest neighbour and quadratic interpolation functions
f_near = interpolate.interp1d(V_csv, cp_csv, kind='nearest')
f_lin  = interpolate.interp1d(V_csv, cp_csv, kind='linear')
f_quad = interpolate.interp1d(V_csv, cp_csv, kind='quadratic')

# Interpolate:
cp_near = f_near(V)
cp_lin  = f_lin(V)
cp_quad = f_quad(V)

# Visulalization
pl.figure()
pl.plot(np.linspace(0,10,256), np.linspace(0,10,256)**2., label='Real V vs cp curve')
pl.plot(V_csv, cp_csv, '-x', label='Given (discrete) V vs. cp curve')
pl.scatter(V, cp_near, label='nearest')
pl.scatter(V, cp_lin,  label='linear')
pl.scatter(V, cp_quad, label='quadratic')
pl.legend(frameon=False, loc='best')
pl.xlabel('V')
pl.ylabel('cp')

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM