2016-11-19 3 views
1

Lassen Sie uns die Matrix AWie wählt man Spalten einer numpigen Matrix basierend auf einer 1-D-Booleschen Maske aus?

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

Wir wollen prüfen, die alle Spalten identifizieren und zu entfernen, in denen jedes Element 0. Wir ist eine Maske wie

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

Wie kann ich mask verwenden erzeugen kann (oder ~mask), um eine Kopie von A zu erstellen, in der nur die Nicht-Null-Spalten beibehalten werden? Das ist

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

Antwort

2
>>> 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]]) 
Verwandte Themen