今天写numpy数组索引时很奇怪突然爆出上面那个错误, 一开始以为是numpy数组索引抛出的异常,最后检查才发现,这是对list索引时抛出的异常, 和numpy没什么关系, 详情见下面的代码
a = np.random.randint(0, 100, size=(10, 5))
b = [list(x) for x in a]
idxs = np.arange(5)
print(a[idxs]) # 没问题
# print(b[idxs]) # TypeError: only integer scalar arrays can be converted to a scalar index
print(b[idxs[0]]) # 没问题, 因为idxs[0]是一个只有一个元素的数组(scalar数组)
# print(b[idxs[0].reshape(1, 1)]) # TypeError: only integer scalar arrays can be converted to a scalar index
**总结: **
1. 我代码中发生上面错误的原因是有一个返回值是列表, 我对它进行数组索引了, 而其他两个返回值是数组, 可以进行数组索引, 这3个返回值混在一起就不太好找出错误了
2. list索引只能是切片或者整数, 不能是list, tuple或者非scalar数组