Python 如何创建布尔数组,其中值基于索引数组?

Python 如何创建布尔数组,其中值基于索引数组?,python,numpy,Python,Numpy,假设我有一个numpy数组a,如下所示: A = array([[0, 2], [1, 2], [0, 1]]) 我使用np.zero创建了一个布尔数组B,如下所示 B = array([[False, False, False], [False, False, False], [False, False, False]]) 现在,我想创建一个数组C,它根据A的列索引给出真值 所以 您可以使用一些Numpy相对先进的索引技术来实现这

假设我有一个numpy数组
a
,如下所示:

A = 
array([[0, 2],
       [1, 2],
       [0, 1]])
我使用
np.zero
创建了一个布尔数组
B
,如下所示

B = 
array([[False, False, False],
       [False, False, False],
       [False, False, False]])
现在,我想创建一个数组
C
,它根据
A
的列索引给出真值

所以


您可以使用一些Numpy相对先进的索引技术来实现这一点:

In [27]: B[np.arange(A.shape[0])[:,None], A] = True                                                                                                                                                  

In [28]: B                                                                                                                                                                                                  
Out[28]: 
array([[ True, False,  True],
       [False,  True,  True],
       [ True,  True, False]])
np.arange(A.shape[0])[:,None]
创建以下数组

array([[0],
       [1],
       [2]])
用作
B
数组第一个轴的索引。此处的
[:,None]
用于将一维
范围
对象转换为二维数组,以与二维的第二轴索引(
a
数组)匹配

array([[0],
       [1],
       [2]])