以下代码:
x = list(range(0,10))
random.shuffle(x)
ind = np.argsort(x)
x[ind]
产生错误:TypeError:只能将整数标量数组转换为标量索引
请注意,我的问题与问题不同, “ numpy array TypeError: only integer scalar arrays can be converted to a scalar index”,它正在尝试更复杂的操作。
我在这个问题上的错误是我试图在普通的python列表上使用索引列表-请参阅我的答案。我希望它发生的范围比仅仅使用范围和随机播放要广泛得多。
答案 0 :(得分:5)
问题是我试图索引x
(一个普通的Python列表),就好像它是一个numpy数组一样。要解决此问题,只需将x
转换为一个numpy数组:
x = list(range(0,10))
random.shuffle(x)
ind = np.argsort(x)
x = np.array(x) # This is the key line
x[ind]
(这已经发生在我身上两次。)
答案 1 :(得分:0)
很好的答案-但我要补充一点,如果无法将列表转换为numpy数组(即,您有一个字符串列表),则无法使用如上所述的索引数组对其进行切片。最直接的替代方法是
[x[i] for i in ind]