使用scipy.stats.itemfreq报错AttributeError,求解决方法
解决
scipy.stats.itemfreq不存在的AttributeError问题 问题原因
scipy 1.0.0及更高版本已移除stats.itemfreq方法,你参考的教程基于旧版本scipy,因此调用时会触发AttributeError。
替代方案
以下是几种常用的替代方法,效果与原itemfreq一致:
1. 使用numpy.unique(推荐)
这是最接近原方法功能的替代,可返回唯一值及对应出现频率,支持一维/多维数组:
import numpy as np # 一维数组示例 arr = np.array([1, 2, 2, 3, 3, 3]) values, counts = np.unique(arr, return_counts=True) # 转换为类似itemfreq的二维表格格式 freq_table = np.column_stack((values, counts)) print(freq_table) # 多维数组示例(比如二维数组) arr_2d = np.array([[1,2], [2,3], [1,2]]) values_2d, counts_2d = np.unique(arr_2d, axis=0, return_counts=True) freq_table_2d = np.column_stack((values_2d, counts_2d)) print(freq_table_2d)
2. 使用collections.Counter
适合处理Python列表,返回字典形式的频率统计,可按需转换为数组:
from collections import Counter import numpy as np arr = [1, 2, 2, 3, 3, 3] count_result = Counter(arr) # 转换为二维数组格式 freq_table = np.array(list(count_result.items())) print(freq_table)
3. 降级scipy(不推荐)
如果必须使用原itemfreq方法,可以降级scipy到1.0.0以下版本,执行命令:
pip install scipy==0.19.1
但此方法不建议,因为旧版本存在安全隐患和功能缺失。
内容的提问来源于stack exchange,提问作者Md Aman Ullah
相关产品推荐
相关产品推荐

