圈圈456 2022-11-22 21:26 采纳率: 90.9%
浏览 13
已结题

Python index() ValueError: 402.11 is not in list

问题遇到的现象和发生背景

我循环遍历了两个数组,用以对其中一组数据进行数据扩充。数据如下:第一张图是需要扩充的,第二张是扩充范围,以第一列为基准,最邻近填充第二列

img

img

用代码块功能插入代码,请勿粘贴截图
txt = pd.read_csv('F:\\Practice\\RamanSpectrum\\Savitzky-Golay\\actinolite\\R040063.txt', header=None)  # 第一张图的数据读入
array = np.array(txt, dtype='float32')  # 转换为数组

center_array = get_unique('F:\\Practice\\RamanSpectrum\\Savitzky-Golay')  # 第二张图的数据读入

list_arr = list(center_array[:, 0])  # 设置一个列表用以索引指引

# 遍历第一张图,把第二张图对应的位置前后填充起来
for x in range(len(array)):
    print(x)
    if x == len(array) - 1:
        break
    num = int(round(array[x + 1, 0] - array[x, 0], 4) * 100) - 1
    a = int(array[x, 0] * 100)/100
    b = int(array[x + 1, 0] * 100)/100
    loc1 = list_arr.index(a)
    loc2 = list_arr.index(b)
    center_array[loc1:loc1 + num // 2 + 1, 1] = array[x, 1]
    center_array[loc1 + num // 2 + 1:loc2 + 1, 1] = array[x + 1, 1]
运行结果及报错内容

因为出现了错误,所以我尝试输出x,查看哪个数字出现错误,

img


结果显示,是第一张图第488这个位置的数出现了问题,查看数据:

img


但该数字int后不应该是402.11,甚至第二张图里面都没有出现过,所以才导致index找不到,但问题是int(401.637900*100)/100后得到的数值是401.63:

img

我的解答思路和尝试过的方法

我之前使用的是round保留两位数,但我只需要强制进行后两位的选取,并不需要四舍五入。
所以我换成了int,但还是出现了问题

  • 写回答

1条回答 默认 最新

  • orbitgw C++领域新星创作者 2022-11-23 00:57
    关注

    Python中str.index如果找不到就会报错,可以用异常处理,或者换成str.count
    麻烦采纳一下哟,谢谢๑•́₃•̀๑

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 11月29日
  • 已采纳回答 11月29日
  • 创建了问题 11月22日

悬赏问题

  • ¥15 三分类机器学习模型可视化分析
  • ¥15 本地测试网站127.0.0.1 已拒绝连接,如何解决?(标签-ubuntu)
  • ¥50 Qt在release捕获异常并跟踪堆栈(有Demo,跑一下环境再回答)
  • ¥30 python,LLM 文本提炼
  • ¥15 关于将inet引入的相关问题
  • ¥15 关于一个倒计时的操作和显示设计
  • ¥15 提问STK的问题,哪位航天领域的同学会啊
  • ¥15 苹果系统的mac m1芯片的笔记本使用ce修改器使用不了
  • ¥15 单相逆变的电压电流双闭环中进行低通滤波PID算法改进
  • ¥15 关于#java#的问题,请各位专家解答!