Python 如何创建布尔数组,其中值基于索引数组?
假设我有一个numpy数组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相对先进的索引技术来实现这
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]])