簡體   English   中英

使用布爾值的numpy數組索引

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM