说我有一个阵列x = np.arange(6).reshape(3, 2)
。`x [False]`在numpy中做什么?
什么意思是x[False]
的意思,或x[np.asanyarray(False)]
?两者都导致array([], shape=(0, 3, 2), dtype=int64)
,这是意想不到的。
由于尺寸大小不正确,我预计会得到一个IndexError
,如x[np.ones((2, 2), dtype=np.bool)]
。
这种行为是一致为x[True]
和x[np.asanyarray(True)]
,既导致额外的维度:array([[[0, 1], [2, 3], [4, 5]]])
。
我正在使用numpy 1.13.1。看来最近的行为已经发生了变化,所以虽然很高兴为旧版本提供答案,但请在答案中提及您的版本。
编辑
只是为了保持完整性,我基于对这个问题进行评论提交https://github.com/numpy/numpy/issues/9515。
EDIT 2
和关闭它几乎immeditely。
你在用什么NumPy版本?结果,我得到'array([0,1])'。这是因为'False'被视为'0', - >'x [0]'(在1.11.3中) –
@BradSolomon它在最后一个版本中被更改:https://docs.scipy.org/ (1)[array(True)]给出了数组([1]),这个数组是一个数组,而不是原始数组。*) – ayhan
@BradSolomon。版本1.13.1,除非您传入布尔矩阵,否则'False'将被视为整数,正如我在预期的示例中所示。我对'x [False] == x [0]'的想法很好,但对于'x [np.array(False)] == x [0]'没有那么多'。这两者似乎都没有发生。 –