[英]numpy array indexing with boolean
我看到有人用布爾數組索引數組。 我做了一些研究並測試了以下代碼
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
我做錯了什么?有什么區別?
謝謝
B
是一個數組,但是[ True, False, .. ]
是一個列表。
這是一樣的:
A[np.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]])]
# array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
采用:
A[np.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]])]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.