numpy的学习-05

标签: 自学  python  numpy

排序、搜索和计数

排序(默认升序)

数组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 独自拥有的元素的并集。
版权声明:本文为w9mysun原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/w9mysun/article/details/109428808