python - 如何创建一个值基于索引数组的布尔数组?
问题描述
假设我有一个 numpy 数组A
,如下所示:
A =
array([[0, 2],
[1, 2],
[0, 1]])
B
我使用np.zeros
如下创建了一个布尔数组
B =
array([[False, False, False],
[False, False, False],
[False, False, False]])
现在,我想创建一个数组C
,它根据 的列索引给出 True 值A
。
所以,
C =
array([[True, False, True],
[False, True, True],
[True, True, False]])
解决方案
您可以使用一些 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]
用于将一维range
对象转换为二维数组,以匹配二维的第二个轴索引(A
数组)。
推荐阅读
- reactjs - How to handle API errors in a connected react component?
- php - Adding dynamic custom tab for WooCommerce products
- angular - 使用锚点单击显示 MatCalendar
- spring-boot - springboot 不支持同组名的多个 Docket
- git - Git - 恢复文件
- javascript - 输入中的Angularjs ng-model不会更新控制器中的值
- android - 如何将所有数据从 SQLite 发送到 Android 中的服务器
- css - 为什么我的 SVG 文本在 Microsoft Edge 中没有垂直居中?
- apache-spark - 如何使用 terraform 在 EMR 创建中启动 Spark 作业
- excel - 如何从图表中访问单个条形的高度并进行更改?