Python中替换列表内小于容差的numpy数组元素为空列表报错解决
问题解决:修正索引错误并实现数组元素替换
错误原因分析
- 索引顺序颠倒:原代码用
Test[j][i]访问元素,但外层循环变量i对应Test的子列表,内层循环变量j对应子列表中的元素,正确访问顺序应为Test[i][j]。 - 错误赋值破坏结构:else分支里
Test=Test[j][i]直接把整个Test替换成单个numpy数组,彻底打乱原列表结构,导致后续循环触发索引越界。
修正后的代码
import numpy as np tol = 1e-12 Test = [[np.array([9.75016872e-15])], [np.array([9.75016872e-15]), np.array([0.00019793]), np.array([0.0001007])]] # 遍历外层列表的每个子列表 for i in range(len(Test)): # 遍历子列表中的每个numpy数组 for j in range(len(Test[i])): # 取单元素数组的值进行判断 if Test[i][j][0] < tol: Test[i][j] = [] # 无需额外赋值,直接保留原数组即可 print(Test)
输出结果
[[[]], [[], array([0.00019793]), array([0.0001007])]]
内容的提问来源于stack exchange,提问作者rajunarlikar123
相关产品推荐
相关产品推荐

