編輯(2017年3月12日[9:11 CST]) - 所以我能夠確定爲什麼數字是235 - 235是指定進入數組的字符串中的字符總數,至少溫度一。所以現在,我的問題是找出爲什麼要計數字符而不是字符串的總數。爲什麼我收到此程序的「ValueError」消息?
我寫信,從天氣地下拉實時數據,其分類成數組,然後將最終輸出一個完整的圖形和文本報告的程序。
目前,我無法將數據轉換爲可以使用matplotlib模塊製作圖形的格式。完整的代碼和它的模塊「計算」在這篇文章的底部。
錯誤消息如下:
Traceback (most recent call last):
File "C:/Users/Ryan/PycharmProjects/NWS/weather_data.py", line 254, in <module>
temperatures_array = np.array(temp).reshape(10, 2)
ValueError: cannot reshape array of size 235 into shape (10,2)
我不明白爲什麼我收到此錯誤,因爲數組的大小應該是20,而不是235.如果有人能指出我是什麼做錯了,我會如何從這裏出發,我將不勝感激。
重要說明::除非您生成自己的Weather Underground API密鑰,否則不要嘗試運行此操作。沒有它,它就無法工作。在https://www.wunderground.com/weather/api/
代碼一鍵搞定:
import numpy as np
from calculations import *
import time as t
import matplotlib.pyplot as plt
plt.style.use("classic")
Juneau = {"temperature": None, "feelslike": None, "windspeed": None, "windgustspeed": None, "winddirection": None,
"pressure": None, "humidity": None}
Denver = {"temperature": None, "feelslike": None, "windspeed": None, "windgustspeed": None, "winddirection": None,
"pressure": None, "humidity": None}
Atlanta = {"temperature": None, "feelslike": None, "windspeed": None, "windgustspeed": None, "winddirection": None,
"pressure": None, "humidity": None}
Honolulu = {"temperature": None, "feelslike": None, "windspeed": None, "windgustspeed": None, "winddirection": None,
"pressure": None, "humidity": None}
Springfield = {"temperature": None, "feelslike": None, "windspeed": None, "windgustspeed": None,
"winddirection": None, "pressure": None, "humidity": None}
OklahomaCity = {"temperature": None, "feelslike": None, "windspeed": None, "windgustspeed": None,
"winddirection": None, "pressure": None, "humidity": None}
Austin = {"temperature": None, "feelslike": None, "windspeed": None, "windgustspeed": None, "winddirection": None,
"pressure": None, "humidity": None}
Montpelier = {"temperature": None, "feelslike": None, "windspeed": None, "windgustspeed": None,
"winddirection": None, "pressure": None, "humidity": None}
Richmond = {"temperature": None, "feelslike": None, "windspeed": None, "windgustspeed": None, "winddirection": None,
"pressure": None, "humidity": None}
Olympia = {"temperature": None, "feelslike": None, "windspeed": None, "windgustspeed": None, "winddirection": None,
"pressure": None, "humidity": None}
J = Juneau
D = Denver
AT = Atlanta
H = Honolulu
S = Springfield
OC = OklahomaCity
AU = Austin
M = Montpelier
R = Richmond
OL = Olympia
# Data Setting for Juneau
v1, v2, v3, v4, v5, v6, v7 = get_data("Alaska", "Juneau")
J["temperature"] = v1
J["feelslike"] = v2
J["windspeed"] = v3
J["windgustspeed"] = v4
J["winddirection"] = v5
J["pressure"] = v6
J["humidity"] = v7
print("\nJuneau Data:", J)
# Data Setting for Denver
v1, v2, v3, v4, v5, v6, v7 = get_data("Colorado", "Denver")
D["temperature"] = v1
D["feelslike"] = v2
D["windspeed"] = v3
D["windgustspeed"] = v4
D["winddirection"] = v5
D["pressure"] = v6
D["humidity"] = v7
print("\nDenver Data:", D)
# Data Setting for Atlanta
v1, v2, v3, v4, v5, v6, v7 = get_data("Georgia", "Atlanta")
AT["temperature"] = v1
AT["feelslike"] = v2
AT["windspeed"] = v3
AT["windgustspeed"] = v4
AT["winddirection"] = v5
AT["pressure"] = v6
AT["humidity"] = v7
print("\nAtlanta Data:", AT)
# Data Setting for Honolulu
v1, v2, v3, v4, v5, v6, v7 = get_data("Hawaii", "Honolulu")
H["temperature"] = v1
H["feelslike"] = v2
H["windspeed"] = v3
H["windgustspeed"] = v4
H["winddirection"] = v5
H["pressure"] = v6
H["humidity"] = v7
print("\nHonolulu Data:", H)
# Data Setting for Springfield
v1, v2, v3, v4, v5, v6, v7 = get_data("Illinois", "Springfield")
S["temperature"] = v1
S["feelslike"] = v2
S["windspeed"] = v3
S["windgustspeed"] = v4
S["winddirection"] = v5
S["pressure"] = v6
S["humidity"] = v7
print("\nSpringfield Data:", S)
# Data Setting for Oklahoma City
v1, v2, v3, v4, v5, v6, v7 = get_data("Oklahoma", "Oklahoma_City")
OC["temperature"] = v1
OC["feelslike"] = v2
OC["windspeed"] = v3
OC["windgustspeed"] = v4
OC["winddirection"] = v5
OC["pressure"] = v6
OC["humidity"] = v7
print("\nOklahoma City Data:", OC)
# Data Setting for Austin
v1, v2, v3, v4, v5, v6, v7 = get_data("Texas", "Austin")
AU["temperature"] = v1
AU["feelslike"] = v2
AU["windspeed"] = v3
AU["windgustspeed"] = v4
AU["winddirection"] = v5
AU["pressure"] = v6
AU["humidity"] = v7
print("\nAustin Data:", AU)
# Data Setting for Montpelier
v1, v2, v3, v4, v5, v6, v7 = get_data("Vermont", "Montpelier")
M["temperature"] = v1
M["feelslike"] = v2
M["windspeed"] = v3
M["windgustspeed"] = v4
M["winddirection"] = v5
M["pressure"] = v6
M["humidity"] = v7
print("\nMontpelier Data:", M)
# Data Setting for Richmond
v1, v2, v3, v4, v5, v6, v7 = get_data("Virginia", "Richmond")
R["temperature"] = v1
R["feelslike"] = v2
R["windspeed"] = v3
R["windgustspeed"] = v4
R["winddirection"] = v5
R["pressure"] = v6
R["humidity"] = v7
print("\nRichmond Data:", R)
# Data Setting for Olympia
v1, v2, v3, v4, v5, v6, v7 = get_data("Washington", "Olympia")
OL["temperature"] = v1
OL["feelslike"] = v2
OL["windspeed"] = v3
OL["windgustspeed"] = v4
OL["winddirection"] = v5
OL["pressure"] = v6
OL["humidity"] = v7
print("\nOlympia Data:", OL)
temperatures = []
temperatures.extend([str(AU["temperature"]) + " F"])
temperatures.extend([str(H["temperature"]) + " F"])
temperatures.extend([str(M["temperature"]) + " F"])
temperatures.extend([str(R["temperature"]) + " F"])
temperatures.extend([str(OL["temperature"]) + " F"])
temperatures.extend([str(J["temperature"]) + " F"])
temperatures.extend([str(AT["temperature"]) + " F"])
temperatures.extend([str(S["temperature"]) + " F"])
temperatures.extend([str(D["temperature"]) + " F"])
temperatures.extend([str(OC["temperature"]) + " F"])
feelslike = []
feelslike.extend([str(AU["feelslike"]) + " F"])
feelslike.extend([str(H["feelslike"]) + " F"])
feelslike.extend([str(M["feelslike"]) + " F"])
feelslike.extend([str(R["feelslike"]) + " F"])
feelslike.extend([str(OL["feelslike"]) + " F"])
feelslike.extend([str(J["feelslike"]) + " F"])
feelslike.extend([str(AT["feelslike"]) + " F"])
feelslike.extend([str(S["feelslike"]) + " F"])
feelslike.extend([str(D["feelslike"]) + " F"])
feelslike.extend([str(OC["feelslike"]) + " F"])
windspeed = []
windspeed.extend([str(AU["windspeed"]) + " MPH"])
windspeed.extend([str(H["windspeed"]) + " MPH"])
windspeed.extend([str(M["windspeed"]) + " MPH"])
windspeed.extend([str(R["windspeed"]) + " MPH"])
windspeed.extend([str(OL["windspeed"]) + " MPH"])
windspeed.extend([str(J["windspeed"]) + " MPH"])
windspeed.extend([str(AT["windspeed"]) + " MPH"])
windspeed.extend([str(S["windspeed"]) + " MPH"])
windspeed.extend([str(D["windspeed"]) + " MPH"])
windspeed.extend([str(OC["windspeed"]) + " MPH"])
windgustspeed = []
windgustspeed.extend([str(AU["windgustspeed"]) + " MPH"])
windgustspeed.extend([str(H["windgustspeed"]) + " MPH"])
windgustspeed.extend([str(M["windgustspeed"]) + " MPH"])
windgustspeed.extend([str(R["windgustspeed"]) + " MPH"])
windgustspeed.extend([str(OL["windgustspeed"]) + " MPH"])
windgustspeed.extend([str(J["windgustspeed"]) + " MPH"])
windgustspeed.extend([str(AT["windgustspeed"]) + " MPH"])
windgustspeed.extend([str(S["windgustspeed"]) + " MPH"])
windgustspeed.extend([str(D["windgustspeed"]) + " MPH"])
windgustspeed.extend([str(OC["windgustspeed"]) + " MPH"])
winddirection = []
winddirection.extend([AU["winddirection"]])
winddirection.extend([H["winddirection"]])
winddirection.extend([M["winddirection"]])
winddirection.extend([R["winddirection"]])
winddirection.extend([OL["winddirection"]])
winddirection.extend([J["winddirection"]])
winddirection.extend([AT["winddirection"]])
winddirection.extend([S["winddirection"]])
winddirection.extend([D["winddirection"]])
winddirection.extend([OC["winddirection"]])
pressure = []
pressure.extend([str(AU["pressure"]) + " in"])
pressure.extend([str(H["pressure"]) + " in"])
pressure.extend([str(M["pressure"]) + " in"])
pressure.extend([str(R["pressure"]) + " in"])
pressure.extend([str(OL["pressure"]) + " in"])
pressure.extend([str(J["pressure"]) + " in"])
pressure.extend([str(AT["pressure"]) + " in"])
pressure.extend([str(S["pressure"]) + " in"])
pressure.extend([str(D["pressure"]) + " in"])
pressure.extend([str(OC["pressure"]) + " in"])
humidity = []
humidity.extend([AU["humidity"]])
humidity.extend([H["humidity"]])
humidity.extend([M["humidity"]])
humidity.extend([R["humidity"]])
humidity.extend([OL["humidity"]])
humidity.extend([J["humidity"]])
humidity.extend([AT["humidity"]])
humidity.extend([S["humidity"]])
humidity.extend([D["humidity"]])
humidity.extend([OC["humidity"]])
areas = ["Austin, Texas", "Honolulu, Hawaii", "Montpelier, Vermont", "Richmond, Virginia", "Olympia, Washington", "Juneau, Alaska", "Atlanta, Georgia", "Springfield, Illinois", "Denver, Colorado", "Oklahoma City, Oklahoma"]
temp = []
x = 10
y = 0
while x > 0:
temp.extend(areas[y])
temp.extend(temperatures[y])
y += 1
x -= 1
temperatures_array = np.array(temp).reshape(10, 2)
print("\nTemperatures:")
print(temperatures_array)
temp = []
x = 10
y = 0
while x > 0:
temp.extend(areas[y])
temp.extend(feelslike[y])
y += 1
x -= 1
feelslike_array = np.array(temp).reshape(10, 2)
print("\nFeels Like Temperatures:")
print(feelslike_array)
temp = []
x = 10
y = 0
while x > 0:
temp.extend(areas[y])
temp.extend(windspeed[y])
y += 1
x -= 1
windspeed_array = np.array(temp).reshape(10, 2)
print("\nWind Speeds:")
print(windspeed_array)
temp = []
x = 10
y = 0
while x > 0:
temp.extend(areas[y])
temp.extend(windgustspeed[y])
y += 1
x -= 1
windgustspeed_array = np.array(temp).reshape(10, 2)
print("\nWind Gust Speeds:")
print(windgustspeed_array)
temp = []
x = 10
y = 0
while x > 0:
temp.extend(areas[y])
temp.extend(winddirection[y])
y += 1
x -= 1
winddirection_array = np.array(temp).reshape(10, 2)
print("\nWind Directions:")
print(winddirection_array)
temp = []
x = 10
y = 0
while x > 0:
temp.extend(areas[y])
temp.extend(pressure[y])
y += 1
x -= 1
pressure_array = np.array(temp).reshape(10, 2)
print("\nPressures:")
print(pressure_array)
temp = []
x = 10
y = 0
while x > 0:
temp.extend(areas[y])
temp.extend(humidity[y])
y += 1
x -= 1
humidity_array = np.array(temp).reshape(10, 2)
print("\nHumidities:")
print(humidity_array)
time = []
time.extend(t.gmtime())
filename = ("Report" + "_" + str(time[0]) + "_" + str(time[1]) + "_" + str(time[2]) + "_" + str(time[3]) + "_" + str(time[4]) + "_" + str(time[5]))
openfile = open(filename, "a")
openfile.write("Temperatures:")
openfile.write("\n")
openfile.write(str(temperatures_array))
openfile.write("\n")
openfile.write("\nFeels Like Temperatures:")
openfile.write("\n")
openfile.write(str(feelslike_array))
openfile.write("\n")
openfile.write("\nWind Speeds:")
openfile.write("\n")
openfile.write(str(windspeed_array))
openfile.write("\n")
openfile.write("\nWind Gust Speeds:")
openfile.write("\n")
openfile.write(str(windgustspeed_array))
openfile.write("\n")
openfile.write("\nWind Directions:")
openfile.write("\n")
openfile.write(str(winddirection_array))
openfile.write("\n")
openfile.write("\nPressures:")
openfile.write("\n")
openfile.write(str(pressure_array))
openfile.write("\n")
openfile.write("\nHumidities:")
openfile.write("\n")
openfile.write(str(humidity_array))
openfile.close()
figure = plt.hist(temperatures_array, color="steelblue")
figure.savefig("temperature_graph.png")
figure = plt.hist(feelslike_array, color="steelblue")
figure.savefig("temperature_graph.png")
figure = plt.hist(windspeed_array, color="steelblue")
figure.savefig("temperature_graph.png")
figure = plt.hist(windgustspeed_array, color="steelblue")
figure.savefig("temperature_graph.png")
figure = plt.hist(pressure_array, color="steelblue")
figure.savefig("temperature_graph.png")
figure = plt.hist(humidity_array, color="steelblue")
figure.savefig("temperature_graph.png")
input("\nPress enter to exit.")
模塊 「計算」:
import urllib3
import json
def get_data(state, city):
wukey = [REDACTED FOR SAFETY]
url = "http://api.wunderground.com/api/{}/conditions/forecast/q/{}/{}.json".format(wukey, state, city)
http = urllib3.PoolManager()
response = http.request('GET', url)
json_string = response.data.decode('utf8')
parsed_json = json.loads(json_string)
temp = float(parsed_json['current_observation']['temp_f'])
feelslike = float(parsed_json['current_observation']['feelslike_f'])
windspeed = float(parsed_json['current_observation']['wind_mph'])
windgust = float(parsed_json['current_observation']['wind_gust_mph'])
winddir = str(parsed_json['current_observation']['wind_dir'])
pressure = float(parsed_json['current_observation']['pressure_in'])
humidity = str(parsed_json['current_observation']['relative_humidity'])
response.close()
return temp, feelslike, windspeed, windgust, winddir, pressure, humidity
謝謝你在前進的人誰可以幫助!
非常感謝您的幫助 - 它似乎有效! –
沒問題。你想要一個區域/溫度代碼片段的優化版本嗎?另外,如果我的解決方案解決了您的問題,請將其標記爲答案。這樣,任何查看此問題的人都可以輕鬆指出解決方案。 –