比较、布尔索引和排序#

import numpy as np

比较得到 bool 型数组#

x = np.arange(6)
x
array([0, 1, 2, 3, 4, 5])
# 各个元素是否小于3
x < 3
array([ True,  True,  True, False, False, False])
# 各个元素是否满足等式
(2 ** x) == (x ** 2)
array([False, False,  True, False,  True, False])
# 大于等于1的元素个数
np.sum(x >= 1)
5
# 是否有元素为0
np.any(x == 0)
True
# 是否所有元素都大于0
np.all(x > 0)
False
# 多个条件,是否是[1, 4]间的数
(x >= 1) & (x <= 4)
array([False,  True,  True,  True,  True, False])

bool 型数组作为索引#

x[~((x > 4) | (x <= 2)) ]
array([3, 4])

排序#

np.random.seed(0)
a = np.random.randint(0, 10, 5)
a
array([5, 0, 3, 3, 7])
# 将a排序后数组,原数组a未改变
np.sort(a)
array([0, 3, 3, 5, 7])
# 从小到大的元素索引值
np.argsort(a)
array([1, 2, 3, 0, 4])
# 使用np.argsort(a)作为索引
a[np.argsort(a)]
array([0, 3, 3, 5, 7])
# 排序并改变原数组
a.sort()
a
array([0, 3, 3, 5, 7])