调整图像尺寸时出现IndexError:列表赋值索引超出范围问题求助
解决调整图像尺寸时的IndexError问题
错误原因
你这段代码触发IndexError: list assignment index out of range的核心问题是:x_train_all_new是一个空列表,你试图通过x_train_all_new[i]的索引方式给它赋值,但空列表中不存在第i个位置,自然会报错。另外,代码里的np.array(x_train_all_new)这行完全无效——你没有把转换后的数组赋值给任何变量,x_train_all_new仍然是空列表。
修正方案
下面提供几种可行的修正方式:
方式1:使用列表append方法
遍历原列表,将处理后的图像逐个添加到新列表中:
x_train_all_new = [] for img in x_train_all: # 调整尺寸并归一化 resized_img = tf.image.resize(img, (HEIGHT, WIDTH)) / 255.0 x_train_all_new.append(resized_img) # 若需要转为numpy数组,执行这一步 x_train_all_new = np.array(x_train_all_new)
方式2:使用列表推导式(更简洁)
用列表推导式直接生成处理后的列表:
x_train_all_new = [tf.image.resize(img, (HEIGHT, WIDTH)) / 255.0 for img in x_train_all] # 转为numpy数组(按需执行) x_train_all_new = np.array(x_train_all_new)
方式3:批量处理(更高效)
如果x_train_all中的元素形状一致,可以先转为numpy数组,再批量调整尺寸,效率更高:
# 将原列表转为numpy数组 x_train_all_np = np.array(x_train_all) # 批量调整尺寸并归一化 x_train_all_new = tf.image.resize(x_train_all_np, (HEIGHT, WIDTH)) / 255.0 # 转为numpy数组(按需执行) x_train_all_new = x_train_all_new.numpy()
内容的提问来源于stack exchange,提问作者Nancy Kansal
相关产品推荐
相关产品推荐

