我看到有人用布爾數組索引數組。我做了一些研究和測試,下面的代碼numpy數組索引布爾值
import numpy as np
A=np.arange(30)
A.shape = (10,3)
這給矩陣
>>> A
array([[ 0, 1, 2],
[ 3, 4, 5],
[ 6, 7, 8],
[ 9, 10, 11],
[12, 13, 14],
[15, 16, 17],
[18, 19, 20],
[21, 22, 23],
[24, 25, 26],
[27, 28, 29]])
然後我做了這個
B = A<10
這給
B=array([[ True, True, True],
[ True, True, True],
[ True, True, True],
[ True, False, False],
[False, False, False],
[False, False, False],
[False, False, False],
[False, False, False],
[False, False, False],
[False, False, False]], dtype=bool)
而且
A[B]
array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
這裏是我的問題,我通過輸入完全相同的陣列,而不是把變量B嘗試這樣做,它原來是一個錯誤
>>> A[[[ True, True, True],
... [ True, True, True],
... [ True, True, True],
... [ True, False, False],
... [False, False, False],
... [False, False, False],
... [False, False, False],
... [False, False, False],
... [False, False, False],
... [False, False, False]]]
Traceback (most recent call last):
File "<stdin>", line 10, in <module>
IndexError: too many indices for array
我做了什麼錯,有什麼區別?
由於
在正在輸入作爲列表中的第二方法,該方法不執行布爾掩蔽與第一方法'A [ B]'。 – Divakar
在某些情況下,使用數組和列表建立索引是相同的,但這不是其中之一。 – hpaulj