排序、搜索和计数
排序(默认升序)
数组a变成-a则表示降序
- numpy.sort(a[, axis=-1, kind=‘quicksort’, order=None])表示排序,返回拷贝;默认axis=-1,表示按最后一个轴的方向来排序,0表示按行方向排序即竖着,1表示按列方向排序即横着(二维中-1与1的效果一样),None表示展开排序;kind表示排序算法的选择,默认quicksort快排、mergesort混排、heapsort堆排;order可使用字段来排序。
- numpy.argsort(a[, axis=-1, kind=‘quicksort’, order=None])返回排序后的元素的索引位置y,x[y]即可得到排序后的数组;axis解释同上;
- numpy.lexsort(keys[, axis=-1])表示按keys中最后一个键用于主排序键进行排序,并返回索引数组。
- numpy.partition(a, kth, axis=-1, kind=‘introselect’, order=None)返回拷贝,以排序后索引是kth的元素为基准,将元素分成两部分,小于该元素的放在其前面(无序),大于该元素的放在其后面(无序)。 过程:先排序,取第k个元素后,进行前后分组。
np.random.seed(100)
x = np.random.randint(1, 30, [8, 3])
print(x)
# [[ 9 25 4]
# [ 8 24 16]
# [17 11 21]
# [ 3 22 3]
# [ 3 15 3]
# [18 17 25]
# [16 5 12]
# [29 27 17]]
z = np.partition(x, kth=2, axis=0)
print(z)
# [[ 3 5 3]
# [ 3 11 3]
# [ 8 15 4] ##按行排序后,取第三小元素为基准 把数组分为两部分
# [ 9 22 21]
# [17 24 16]
# [18 17 25]
# [16 25 12]
# [29 27 17]]
print(z[2]) ##选取第三小的元素
# [ 8 15 4]
- numpy.argpartition(a, kth, axis=-1, kind=‘introselect’, order=None)返回的是索引数组,与上述过程相同。
搜索
- numpy.argmax(a[, axis=None, out=None])沿着axis方向,返回最大元素的索引;axis=None的情况下表示展开成一维的后,返回最大元素的索引。
- numpy.argmin(a[, axis=None, out=None])沿着axis方向,返回最小元素的索引。
- numppy.nonzero(a)返回数组a(假设n维)中非零元素的索引,返回值是n个一维数组,每一个数组表示在该维度上的索引。
- numpy.where(condition, [x=None, y=None])满足condition条件,则输出x,不满足则输出y;若只有condition,没有x/y则输出满足condition条件的元素的坐标(等价与np.npnzero)。
- numpy.searchsorted(a, v[, side=‘left’, sorter=None]) 返回插入元素v的位置;side表示查询方向,默认是left;sorter是一个存放着数组a升序情况下的index 的一维数组。
计数
- numpy.count_nonzero(a, axis=None)返回数组a在axis方向上非零元素的个数;默认情况下axis=None表示无方向,直接统计所有符合条件的元素个数。
集合操作
构造集合
- numpy.unique(a, return_index=False, return_inverse=False, return_counts=False, axis=None) 返回 数组中的唯一值并进行排序后的结果;return_index=True 表示返回新列表元素在旧列表中的位置;return_inverse=True表示返回旧列表元素在新列表中的位置;return_counts=True表示返回新列表元素在旧列表中出现的次数。
!二维数组中,axis=0表示返回特殊的行。
布尔运算
- numpy.in1d(a1, a2, assume_unique=False, invert=False) 返回 如果a1与a2相同的元素 的布尔True,反之返回False 的数组,数组大小是与a1相同的。也即a1中是否包含了a2;invert=True表示如果元素不同则返回布尔True。
求两个集合的交集、并集、差集、异或
- numpy.intersect1d(ar1, ar2, assume_unique=False, return_indices=False) 求交集,可排序后返回索引
- numpy.union1d(ar1, ar2) 并集
- numpy.setdiff1d(ar1, ar2, assume_unique=False) 差集,在a1不在a2的元素集合。
- numpy.setxor1d(ar1, ar2, assume_unique=False) 异或,a1和a2 独自拥有的元素的并集。