圈圈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 对于squad数据集的基于bert模型的微调
  • ¥15 为什么我运行这个网络会出现以下报错?CRNN神经网络
  • ¥20 steam下载游戏占用内存
  • ¥15 CST保存项目时失败
  • ¥15 树莓派5怎么用camera module 3啊
  • ¥20 java在应用程序里获取不到扬声器设备
  • ¥15 echarts动画效果的问题,请帮我添加一个动画。不要机器人回答。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事: