python数据科学(五) Numpy(四)

本文最后更新于:2023年4月15日 晚上

python数据科学(五) Numpy(四)

1 | 比较, 掩码和布尔逻辑

利用如上述运算符可以得到一个bool型的数组d

如:

操作bool数组

统计布尔数组中true的个数: np.count_nonzero() 或者 np.sum()

利用np.sum()可以沿着列或者行进行, 如np.sum(x < 6, axis = 1)

快速检查任意或者所有的这些值是否为true: np.any()np.all()

bool运算符

可以利用& | ^ ~对bool数组进行与或异或非运算

bool运算

例如: 统计>0.5且<1的个数` np.sum((x > 5) & (x < 1))`

and, or&, |的区别: and和or对整个对象进行bool运算, 而&|对一个对象的内容执行多个bool运算, 对于Numpy的bool数组, 后者是常用的操作

将bool数组作为掩码

2 | fancy indexing (花哨索引)

花哨索引的概念: 传递一个索引数组来一次性获得多个数组元素

直接举例:

组合索引

将fancy indexing和简单地索引组合使用:

1
2
3
4
5
6
7
# 1 | fancy indexing & simple indexing
X[2, [2, 0, 1]]
# 2 | fancy indexing & slice
X[1:, [2, 0, 1]]
# 3 | fancy indexing & mask
mask = np.array([1, 0, 1, 0], dtype = bool) # dtype必须要有, 否则结果为索引
X[row[:, np.newaxis], mask]

3 | 数组的排序

np.sort()提供快速排序, 在不修改原始数组的基础上返回一个排好序的数组

np.argsort()返回原始数组排好序的索引值

np.partition(x, K)返回新数组, 左边是数组中最小的K个值, 右边是原数组的其他值

同样地, np.argpartition()函数计算的是分隔的索引值

可以通过指定axis参数对行/列排序 (这样处理将行列当成独立的数组, 丢失行列值之间的关系)


python数据科学(五) Numpy(四)
https://blog.roccoshi.top/posts/59791/
作者
RoccoShi
发布于
2021年1月18日
许可协议