求助:函数返回的averages_table数组在外部无法访问
问题:函数返回的数组无法在外部访问
我正在完成一项编程作业,需要将某部分生成的数组用于另一部分的绘图,但发现Section1_5_airportAverages()函数返回的averages_table数组在函数外部无法被识别,无法传递给其他函数。我是编程新手,代码可能存在其他不足,但当前仅需实现该数组在代码其他部分的可访问性。
以下是我目前的代码:
import numpy as np import matplotlib.pyplot as plt def Section1_5_airportAverages(): print('5. File aircrafts.csv contains monthly aircraft arrival and departure data recorded at an airport\n' 'from 2010 to 2015. Open the aircrafts.csv file using any text editor (or using any spreadsheet\n' 'application) to see the content - use Notepad, TextEdit, or similar text editor to see comma separated\n' 'values and format. Your task is to write a program to analyze the data using Numpy arrays and output\n' 'average number of arrivals and departures in each year – in the following format.\n') airports = np.genfromtxt('aircrafts.csv', delimiter=',', skip_header=1, dtype=str) year = 2010 count = 0 total_arrivals_per_year = 0 total_departures_per_year = 0 averages_table = np.empty((0),str) print('Year Arrivals Departures') # Header for table while True: for i, value in enumerate(airports): # Iterates through airports and assigns an index to each element. if count < 11 and year <= 2015: count += 1 total_arrivals_per_year += airports[i][1].astype(int) total_departures_per_year += airports[i][2].astype(int) elif count == 11 and year < 2015: # Allows holding variable to be reset, and increments year. count += 1 total_arrivals_per_year += airports[i][1].astype(int) average_arrivals_per_year = total_arrivals_per_year/count total_departures_per_year += airports[i][2].astype(int) average_departures_per_year = total_departures_per_year / count print(year, average_arrivals_per_year.round(2), average_departures_per_year.round(2)) count = 0 year += 1 total_arrivals_per_year = 0 total_departures_per_year = 0 averages_table = np.append(averages_table,[year, average_arrivals_per_year, average_departures_per_year]) elif count == 11 and year == 2015: # Ends the function after year 2015 is complete. count += 1 total_arrivals_per_year += airports[i][1].astype(int) average_arrivals_per_year = total_arrivals_per_year / count total_departures_per_year += airports[i][2].astype(int) average_departures_per_year = total_departures_per_year / count print(year, average_arrivals_per_year.round(2), average_departures_per_year.round(2)) averages_table = np.append(averages_table, [year, average_arrivals_per_year, average_departures_per_year]).reshape((6,3)).astype(float).round(2) return averages_table
解决方法
你的函数已经通过return averages_table正确返回了数组,只需在调用函数时将返回值赋值给一个变量,就能在代码其他部分访问该数组:
- 调用函数并保存返回值
在函数定义之后,添加调用代码将结果存入变量:
# 调用函数,把返回的数组保存到变量中 airport_averages = Section1_5_airportAverages()
- 在其他函数中使用该变量
现在airport_averages可被任何能访问到它的函数调用,比如用于绘图的函数:
def plot_airport_stats(data): # 从数组中提取年份、平均到达数、平均出发数 years = data[:, 0] avg_arrivals = data[:, 1] avg_departures = data[:, 2] # 绘制统计折线图 plt.figure(figsize=(8,5)) plt.plot(years, avg_arrivals, marker='o', label='平均到达航班数') plt.plot(years, avg_departures, marker='s', label='平均出发航班数') plt.xlabel('年份') plt.ylabel('平均航班数量') plt.title('机场年度平均航班统计') plt.legend() plt.grid(True) plt.show() # 调用绘图函数,传入保存好的数组 plot_airport_stats(airport_averages)
通过上述步骤,就能将函数生成的数组传递给绘图功能,完成需求。
内容的提问来源于stack exchange,提问作者vaporcake
相关产品推荐
相关产品推荐

