Joh*_*Doe 34 python indexing boolean numpy mask
我猜答案即将到来,但我看不到它:-(
我有一个长度为n的布尔掩码数组:
a = np.array([True, True, True, False, False])
Run Code Online (Sandbox Code Playgroud)
我有一个带有n列的二维数组:
b = np.array([[1,2,3,4,5], [1,2,3,4,5]])
Run Code Online (Sandbox Code Playgroud)
我想要一个只包含"True"值的新数组,例如:
c = ([[1,2,3], [1,2,3]])
Run Code Online (Sandbox Code Playgroud)
a 不起作用,因为它包含我不想要的假列的"0"
c = np.delete(b, a, 1) does not work
Run Code Online (Sandbox Code Playgroud)
有什么建议?谢谢!
DSM*_*DSM 43
你可能想要这样的东西:
>>> a = np.array([True, True, True, False, False])
>>> b = np.array([[1,2,3,4,5], [1,2,3,4,5]])
>>> b[:,a]
array([[1, 2, 3],
[1, 2, 3]])
Run Code Online (Sandbox Code Playgroud)
请注意,此类型的索引来工作的,它需要一个ndarray像你正在使用,而不是一个list,或者它会解释False,并True为0和1,给你的那些列:
>>> b[:,[True, True, True, False, False]]
array([[2, 2, 2, 1, 1],
[2, 2, 2, 1, 1]])
Run Code Online (Sandbox Code Playgroud)