numpy学习(布尔型索引)

假设我们有一个用于存储数据的数组以及一个存储姓名的数组(含有重复项)。在这里,我将使用numpy.random中的rand函数生成一些正态分布的随机数据:

假设每个名字都对应data数组中的一行,而我们想要选出对应于名字"Bob"的所有行。跟算术运算一样,数组的比较运算(如==)也是矢量化的。因此,对names和字符串"Bob"的比较运算将会产生一个布尔型数组:

这个 布尔 型 数组 可用 于 数组 索引:

 

布尔 型 数组 的 长度 必须 跟 被 索引 的 轴 长度 一致。 此外, 还可以 将 布尔 型 数组 跟 切片、 整数 混合 使用:

要 选择 除" Bob" 以外 的 其他 值, 既可以 使用 不等于 符号(!=), 也可以 通过 波浪线 (~) 对 条件 进行 否定:

通过 波浪线 (~) 对 条件 进行 否定(与上一致)

 需要 组合 应用 多个 布尔 条件, 使用&( 和)、|( 或) 之类 的 布尔 算术 运算符 即可:

通过 布尔 型 索引 选取 数组 中的 数据, 将 总是 创建 数据 的 副本, 即使 返回 一模一样 的 数组 也是 如此。

Python 关键字 and 和 or 在 布尔 型 数组 中 无效。 通过 布尔 型 数组 设置 值 是一 种 经常 用到 的 手段。 为了 将 data 中的 所有<0.2的都 设置 为 0, 我们 只需:

通过 一 维 布尔 数组 设置 整行 或 列 的 值 也 很 简单:

 

posted on 2018-03-09 14:10  疯度翩翩945  阅读(395)  评论(0编辑  收藏  举报

导航