Python:完成数组插值后更新字典内对应数组的实现方法
解决字典中数组插值后更新的问题
我明白你遇到的问题了——你调用了插值函数,但字典里的数组完全没变化对吧?这是因为你只是调用了函数,却没把插值后的结果重新赋值回字典里的对应位置。咱们一步步来解决:
问题根源
你的原代码里,convert_array(row,100,200)只是生成了插值后的新数组,但你没有把这个新数组替换掉原字典里的旧数据。而且遍历row的时候,即使row是原数组的视图,convert_array如果是返回新数组(而非原地修改原row),那原数组也不会自动更新。
正确实现方式
假设你的convert_array函数接收一维数组(比如原数组的一行),返回长度为200的一维插值数组,那可以这样写:
import numpy as np # 先确认你的convert_array函数是返回插值后的数组,比如类似这样的实现(供参考) def convert_array(row, original_len, target_len): x_original = np.linspace(0, 1, original_len) x_target = np.linspace(0, 1, target_len) return np.interp(x_target, x_original, row) # 遍历字典,更新需要插值的数组 for key in array_ex: current_arr = array_ex[key] # 只处理列数为100的数组,避免修改已经是200列的数组 if current_arr.shape[1] == 100: # 逐行插值,再拼接成新的二维数组 new_arr = np.array([convert_array(row, 100, 200) for row in current_arr]) # 把新数组赋值回字典对应的键 array_ex[key] = new_arr
如果你的convert_array可以直接处理二维数组(比如输入(6,100)直接返回(6,200)),那代码会更简洁:
for key in array_ex: current_arr = array_ex[key] if current_arr.shape[1] == 100: array_ex[key] = convert_array(current_arr, 100, 200)
验证结果
执行完上面的代码后,你可以打印array_ex['0_array'].shape,应该会输出(6, 200),说明字典里的数组已经成功更新啦!
内容的提问来源于stack exchange,提问作者ymmy
相关产品推荐
相关产品推荐

