在Jupyter Notebook用numpy做数据归一化时报tuple不能转整数错误如何解决
报错原因
- 触发错误的核心是
n = X.shape这行代码:numpy数组的shape属性返回的是(行数, 列数)格式的元组,而range()函数仅支持传入整数参数,将元组直接传入range(n)就会触发类型错误。
修复方法
你只需要修改一行代码即可解决问题,取X的列数作为循环上限:
# 原代码 n = X.shape 替换为下方代码 n = X.shape[1]
优化建议(可选)
你可以用numpy的广播特性省略for循环,一次性完成所有列的归一化,代码更简洁、执行效率更高:
# 替代整个for循环的单条归一化语句 X = (X - X.min(axis=0)) / (X.max(axis=0) - X.min(axis=0))
额外提示:numpy索引从0开始,如果你要取原data.txt的第1到15列(最左列算第1列),当前
X = np.array(data[:, 1:16])实际取的是原文件的第2到第16列,可根据你的数据情况确认是否需要调整为data[:, 0:15]。
内容的提问来源于stack exchange,提问作者Gibson Nkhata
相关产品推荐
相关产品推荐

