【发布时间】:2019-01-09 07:45:01
【问题描述】:
以下代码:
x = list(range(0,10))
random.shuffle(x)
ind = np.argsort(x)
x[ind]
产生错误:TypeError: only integer scalar arrays can be convert to a scalar index
请注意,我的问题与问题不同, “numpy array TypeError: only integer scalar arrays can be converted to a scalar index”,它正在尝试更复杂的东西。
我在这个问题上的错误是我试图在普通的 python 列表上使用索引列表——请参阅我的答案。我希望它发生的范围比仅仅使用范围和随机播放要广泛得多。
【问题讨论】:
-
您也可以只使用
np.arange(0,10)而不是list(range(0,10)) -
让我做对了。通过这样做,输出仍将与您的原始
x相同,即[0,1,2,3,4,5,6,7,8,9]。你同意吗? -
@Bazingaa 没错。这个问题的重点是说明产生错误“只有整数标量数组可以转换为标量索引”的常见方法
-
@sacul 感谢您的建议。我不知道那个功能。这个问题的重点是说明产生错误“只有整数标量数组可以转换为标量索引”的常见方法
-
你曾经能够做到这一点。我认为这是 python 3 的变化,而不是 numpy 的变化,但我不确定。我来到这里是因为我在 py2.7 中有旧代码,并且我追踪了一个错误到
range(200)[np.array((119,), dtype=int)],其中np.array((119,), dtype=int)是index = np.where(some_complicated_thing == some_complicated_other_thing)的缩写 这在 py2.7 和旧版本的 numpy 中有效,只要转换到整数索引是合法的。您也可能出于旧习惯的原因这样做。
标签: python arrays numpy indexing