說我有一個陣列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]'沒有那麼多'。這兩者似乎都沒有發生。 –