我试图从一系列风速和方向值中获得风。我知道如何编写原始程序来执行此操作,如下所示:
from windrose import WindroseAxes
from matplotlib import pyplot as plt
import matplotlib.cm as cm
import numpy as np
ws=[2.6,2.3,2.1,2.0,2.1,2.2,2.9,2.8,2.39,1.90,1.54,1.29,0.72,0.18,1.08]
wd=[207,208,215,217,213,209,203,195,187,179,164,139,117,101,280]
print "WD is ",wd
print "WS is ",ws
ax = WindroseAxes.from_ax()
ax.bar(wd,ws, normed=True, opening=0.8, edgecolor='white')
ax.set_legend()
plt.show()
唯一的问题是如何让程序将数据读入上述程序中的数组ws(windspeed)和wd(wind direction)。
数据位于ascii文件中,其中两列用空格分隔。第一列是风速,第二列是风向。
第一列中的风速和第二列中的风向。你是否知道如何使用python读取这种类型的风,以便第一列占据ws数组,第二列占用上面脚本中的wd数组?
答案 0 :(得分:1)
您可以使用np.loadtxt
:
data = np.loadtxt('data.txt')
ws = data[:, 0]
wd = data[:, 1]
答案 1 :(得分:1)
我们假设您有一个名为data.csv
的文件,其中包含以下内容
2.6 207
2.3 208
2.1 215
2.0 217
2.1 213
2.2 209
2.9 203
2.8 195
2.39 187
1.90 179
1.54 164
1.29 139
0.72 117
0.18 101
1.08 280
您可以使用Pandas读取CSV文件
df = pd.read_csv("data.csv", names=["ws", "wd"], sep=" ")
ws = df["ws"].values
wd = df["wd"].values
PS:windrose也可以直接使用Pandas DataFrame
答案 2 :(得分:0)
在上面的代码中有一些错误:
scores.GroupBy(p => new {
Date = DbFunctions.CreateDateTime(p.create_dt.Year, p.create_dt.Month, p.create_dt.Day, p.create_dt.Hour, p.create_dt.Minute, second:null)
p.pid,
p.bidc
})
:ax = WindroseAxes.from_ax()
没有属性' from_ax'
以及
WindroseAxes
:
ax.bar(wd,ws, normed=True, opening=0.8, edgecolor='white')
缺少1个必需的位置参数:' var'
密切关注它