Python生成200整数数组直方图报错:TypeError问题求助
错误原因
问题出在histogram函数里——你直接把函数integerlist传给了np.histogram和plt.hist,而没有调用它(也就是加())。这两个直方图工具需要的是数值数组,你传进去的却是函数对象,当它们尝试做数值区间判断时,就会出现“函数和整数不能比较”的错误。
另外,integerlist函数内部用了和函数同名的变量,虽然不会直接报错,但容易混淆,建议改个名字。
修正后的代码
import matplotlib.pyplot as plt import numpy as np def integerlist(): # 把内部变量名改成int_list,避免和函数名冲突 int_list = np.array(np.random.uniform(low=-23, high=42, size=(200,)).astype(int)) return np.ndarray.flatten(int_list) print(integerlist()) def histogram(): # 先调用函数拿到整数数组 data = integerlist() hist, bins = np.histogram(data, bins = [-30,-20,-10,0,10,20,40,50]) print(hist) print(bins) plt.hist(data, [-30,-20,-10,0,10,20,40,50]) plt.title("gleichverteilten Ganzzahlen") plt.show() # 调用histogram函数生成直方图 histogram()
关键说明
- 调用函数必须加
(),不然传递的是函数本身,不是它返回的结果。 - 修正后的代码加了
histogram()调用,不然定义完函数不会自动执行。
内容的提问来源于stack exchange,提问作者iflexi
相关产品推荐
相关产品推荐

