numpy系列(5)-索引、切片、排序、搜索和计数

1. 数组索引

  • 一维:假设有a=array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
    • i. 获取索引值为 1 的数据:
a[1] // 1
    • ii. 分别获取索引值为 1,2,3 的数据:
a[[1, 2, 3]]  // array([1, 2, 3])
  • 二维:假设有a=
    array([[ 0, 1, 2, 3, 4],
    [ 5, 6, 7, 8, 9],
    [10, 11, 12, 13, 14],
    [15, 16, 17, 18, 19]])
    • i. 获取第 2 行,第 3 列的数据:
a[1,2] 或者 a[1][2]  // 7

# 注意:若是python的list类型正确语法只能是a[1][2]
    • ii. 索引多个元素值:
a[[1, 2], [3, 4]]  // 获取a[1,3]和a[2,4]的值:array([ 8, 14])
  • 三维:假设有a=
    array([[[ 0, 1, 2],
    [ 3, 4, 5],
    [ 6, 7, 8],
    [ 9, 10, 11],
    [12, 13, 14]],
    [[15, 16, 17],
    [18, 19, 20],
    [21, 22, 23],
    [24, 25, 26],
    [27, 28, 29]]])
    • i. 索引多个元素值:
a[[0, 1], [1, 2], [1, 2]]  // 获取a[0,1,1]和a[1,2,2]的值:array([ 4, 23])

2. 数组切片:与python的list切片操作是一样的

Ndarray[start:stop:step]:[start:stop:step] 分别代表 [起始索引:截至索引:步长]
列如 a[:, ::2]:按步长为 2 取所有列和所有行的数据
当超过 3 维或更多维时,用 2 维数据的切片方式类推即可。

example:
        a=
            array([[ 0,  1,  2,  3,  4],
            [ 5,  6,  7,  8,  9],
            [10, 11, 12, 13, 14],
            [15, 16, 17, 18, 19]])
        a[0:3, 2:4]=
            array([[ 2,  3],
            [ 7,  8],
            [12, 13]])

3. 排序

numpy.sort(a, axis=-1, kind='quicksort', order=None)
○ axis:要排序的轴。如果为None,则在排序之前将数组铺平。默认值为 -1,沿最后一个轴排序。
○ kind:{'quicksort','mergesort','heapsort'},排序算法。默认值为 quicksort。
numpy.lexsort(keys ,axis):使用多个键进行间接排序。
numpy.argsort(a ,axis,kind,order):沿给定轴执行间接排序。
numpy.msort(a):沿第 1 个轴排序。
numpy.sort_complex(a):针对复数排序。

4. 搜索和计数

○ argmax(a ,axis,out):返回数组中指定轴的最大值的索引。
○ nanargmax(a ,axis):返回数组中指定轴的最大值的索引,忽略 NaN。
○ argmin(a ,axis,out):返回数组中指定轴的最小值的索引。
○ nanargmin(a ,axis):返回数组中指定轴的最小值的索引,忽略 NaN。
○ argwhere(a):返回数组中非 0 元素的索引,按元素分组。
○ nonzero(a):返回数组中非 0 元素的索引。
○ flatnonzero(a):返回数组中非 0 元素的索引,并铺平。
○ where(条件,x,y):根据指定条件,从指定行、列返回元素。
○ searchsorted(a,v ,side,sorter):查找要插入元素以维持顺序的索引。
○ extract(condition,arr):返回满足某些条件的数组的元素。
○ count_nonzero(a):计算数组中非 0 元素的数量。
原文地址:https://www.cnblogs.com/thgpddl/p/14240424.html