如何解决TypeError: only integer scalar arrays can be converted to a scalar index报错
报错原因
报错的核心原因是Python原生列表不支持numpy数组作为索引下标,只有numpy数组类型才支持用同维度的整数数组批量提取元素。你代码中的x_train是普通Python列表,直接传入batch_mask(numpy数组类型)作为索引就会触发该类型错误。
解决方案
提供两种可直接落地的修复方案:
- 方案1:将原生列表转换为numpy数组后再做索引操作
import numpy as np x_train = [0,1,2,3,4] # 转换为numpy数组 x_train_np = np.array(x_train) train_size = 4 batch_size =3 batch_mask = np.random.choice(train_size, batch_size) print(batch_mask) x_batch = x_train_np[batch_mask] print(x_batch)
- 方案2:如果需要保留Python列表格式的输出,用列表推导式遍历索引取值
import numpy as np x_train = [0,1,2,3,4] train_size = 4 batch_size =3 batch_mask = np.random.choice(train_size, batch_size) print(batch_mask) # 逐个提取列表元素 x_batch = [x_train[i] for i in batch_mask] print(x_batch)
内容的提问来源于stack exchange,提问作者applepie
相关产品推荐
相关产品推荐

