问题遇到的现象和发生背景
我循环遍历了两个数组,用以对其中一组数据进行数据扩充。数据如下:第一张图是需要扩充的,第二张是扩充范围,以第一列为基准,最邻近填充第二列
用代码块功能插入代码,请勿粘贴截图
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,查看哪个数字出现错误,
结果显示,是第一张图第488这个位置的数出现了问题,查看数据:
但该数字int后不应该是402.11,甚至第二张图里面都没有出现过,所以才导致index找不到,但问题是int(401.637900*100)/100后得到的数值是401.63:
我的解答思路和尝试过的方法
我之前使用的是round保留两位数,但我只需要强制进行后两位的选取,并不需要四舍五入。
所以我换成了int,但还是出现了问题