根据特定的布尔索引切片numpy数组

时间:2019-04-20 19:13:46

标签: python numpy

我有一个numpy数组(X

1   2   3   4
3   4   5   6
5   6   7   8

和Booelan索引数组(ind

0 1 1 0

我想根据索引对numpy数组进行切片。 即 硅化后的结果数组应仅包含第2列和第3列(对应的索引为1):

2   3   
4   5   
6   7   

我尝试了X[:,ind],但是没有用。

2 个答案:

答案 0 :(得分:3)

您需要将ind转换为boolean array。一种简单的方法是使用numpy.array()

numpy.array(ind, dtype=bool)

然后您可以使用X[:,ind]

答案 1 :(得分:2)

您需要将ind转换为dtype:bool

这可以通过使用ind == 1进行屏蔽来实现。

也就是说,

>>> X[:,ind == 1]
array([[2, 3],
       [4, 5],
       [6, 7]])