尝试在numpy数组中使用整数列表时发生类型错误:只能将整数标量数组转换为标量索引

时间:2018-08-01 16:37:07

标签: python arrays numpy indexing

以下代码:

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列表上使用索引列表-请参阅我的答案。我希望它发生的范围比仅仅使用范围和随机播放要广泛得多。

2 个答案:

答案 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]