簡體   English   中英

如何基於一維布爾掩碼選擇numpy矩陣的列?

[英]How to select columns of a numpy matrix based on a 1-D boolean mask?

讓我們考慮矩陣A

[[1, 0, 1, 0, 0, 0],
[1, 0, 0, 0, 0, 0],
[1, 0, 1, 0, 0, 0],
[1, 0, 1, 0, 0, 1],
[0, 0, 1, 0, 0, 1],
[0, 0, 1, 0, 0, 1]]

我們要識別並刪除每個元素為0的所有列。我們可以生成一個掩碼,例如

mask = np.all(A == 0, axis=0)
# output: [False, True, False, True, True, False]

如何使用mask (或~mask )創建僅保留非空列的A的副本? 那是

[[1, 1, 0],
[1, 0, 0],
[1, 1, 0],
[1, 1, 1],
[0, 1, 1],
[0, 1, 1]]
>>> import numpy as np
>>> A = np.array([[1, 0, 1, 0, 0, 0],
                  [1, 0, 0, 0, 0, 0],
                  [1, 0, 1, 0, 0, 0],
                  [1, 0, 1, 0, 0, 1],
                  [0, 0, 1, 0, 0, 1],
                  [0, 0, 1, 0, 0, 1]])

>>> mask = np.all(A == 0, axis=0)
>>> mask
array([False,  True, False,  True,  True, False], dtype=bool)

>>> A[:,mask]
array([[0, 0, 0],
       [0, 0, 0],
       [0, 0, 0],
       [0, 0, 0],
       [0, 0, 0],
       [0, 0, 0]])

>>> A[:,~mask]
array([[1, 1, 0],
       [1, 0, 0],
       [1, 1, 0],
       [1, 1, 1],
       [0, 1, 1],
       [0, 1, 1]])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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