博客
关于我
for循环读取数组遇问题:dexError: invalid index to scalar variable.
阅读量:280 次
发布时间:2019-03-03

本文共 975 字,大约阅读时间需要 3 分钟。

用for循环从文档中读取数组时,遇到一个bug,只能循环完成第一个循环,第二个循环就报错:dexError: invalid index to scalar variable.

其实是变量设置的问题,代码如下:

...with open(save_path, 'rb') as fi1:        result = pickle.load(fi1, encoding='iso-8859-1')    name, fx = zip(*result)      for i in range(0, 10):    fx = np.array(fx)[i]      f_top_id = fx.argsort()[::-1][0:10]  # 排序,得到由高到低的序号    print('i & fx:',i, fx[f_top_id[i]])...

上面这段代码就是想从文档中的矩阵中一行接一行的提取数组,在for循环中读取第一行没问题,读出第二行就报错,其实原因很简单,低级错误,弄了几个小时debug,太不注意了,之前也遇到过。

问题出在fx这里,从name, fx = zip(*result)得到后,放入循环中又继续用这个变量名fx = np.array(fx)[i],这就炸锅了,第二次循环就肯定报错,因为fx在第一个循环的参数又直接导入到第二个循环中的fx,这就是问题所在,实际上需要fx的数据保持不变。
解决方法:在for循环中的fx改成其他变量名就解决了,如f_x就可以了,改完如下:

...with open(save_path, 'rb') as fi1:        result = pickle.load(fi1, encoding='iso-8859-1')    name, fx = zip(*result)      for i in range(0, 10):    f_x = np.array(fx)[i]      f_top_id = f_x.argsort()[::-1][0:10]  # 排序,得到由高到低的序号    print('i & fx:',i, f_x[f_top_id[i]])...

记录debug的问题,加深记忆,也希望能给其他遇到同样报错的人一些启发,也感谢其他人的分享。

转载地址:http://qpgl.baihongyu.com/

你可能感兴趣的文章
2020牛客暑期多校训练营(第九场)
查看>>
The 2016 ACM-ICPC Asia Dalian Regional Contest 部分题解
查看>>
8皇后问题 递归 函数调用是重点
查看>>
1541 +1 *2 ²
查看>>
老鼠走迷宫
查看>>
面试别慌!阿里专家带你从【入门+基础+进阶+项目】攻破SpringBoot
查看>>
【Java面试】30个 Java 集合面试必备的问题和答案
查看>>
华为鸿蒙到底是不是安卓系统套了个壳?
查看>>
redis知识点学习
查看>>
多线程之创建线程的两种方式
查看>>
fragment中recyclerview的重新加载问题
查看>>
window程序设计(1):第一个windows程序
查看>>
windows程序设计(4):文本输出
查看>>
JZOJ7月29日提高组反思
查看>>
21.2.3总结
查看>>
线性代数和数学期望杂题
查看>>
21.2.4总结
查看>>
【SSL_P2876】2017年东莞市信息学特长生测试题 工程
查看>>
【洛谷_P1433】吃奶酪
查看>>
ssm项目学习8-bootstrap遇到的错误整理篇
查看>>