Numpy库是支持 Python 语言的数值计算第三方库,其拥有强大的多维数组处理与矩阵运算能力;是机器学习的必不可少的工具。本文是在学习了Numpy数值计算课程之后,做的些许笔记。
Numpy数组的索引与切片
数组索引
//一维数据索引
data[x] //索引一个数
data[[x,y,z]]//索引多个数
//二维数据索引
data[x,y]//索引一个数
data[[x1,x2],[y1,y2]]//索引两个数
//三维数据索引
data[[x1,x2],[y1,y2],[z1,z2]]
数组切片
//一维数据的索引
Ndarray[start:stop:step] // 与python里的list切片操作是一样
//[start:stop:step] 分别代表 [起始索引:截至索引:步长]
//多维数据的索引,只需用逗号 , 分割不同维度
data[row1:row2,column1:column2] //二维数组切片,三维类似
Numpy数组排序、搜索及计数
//排序
numpy.sort(a, axis=-1, kind='quicksort', order=None)
//a:数组。
//axis:要排序的轴。如果为None,则在排序之前将数组铺平。默认值为 -1,沿最后一个轴排序。
//kind:{'quicksort','mergesort','heapsort'},排序算法。默认值为 quicksort。
示例:
a = np.random.randn(20).reshape(4, 5)
array([[-0.58130556, 0.14581941, 0.80553632, -1.87284741, -0.41056494],
[ 0.10856851, -0.66159494, 0.52620339, -0.15663751, 0.23842936],
[ 0.24581893, 0.85822414, 1.96948944, -0.33772201, 0.19478995],
[-1.18558649, -0.88364367, -0.80021437, -1.27308585, -0.61206656]])
结果:
np.sort(a)
array([[-1.87284741, -0.58130556, -0.41056494, 0.14581941, 0.80553632],
[-0.66159494, -0.15663751, 0.10856851, 0.23842936, 0.52620339],
[-0.33772201, 0.19478995, 0.24581893, 0.85822414, 1.96948944],
[-1.27308585, -1.18558649, -0.88364367, -0.80021437, -0.61206656]])
//其他方法
//numpy.lexsort(keys ,axis):使用多个键进行间接排序。
//numpy.argsort(a ,axis,kind,order):沿给定轴执行间接排序。
//numpy.msort(a):沿第 1 个轴排序。
//numpy.sort_complex(a):针对复数排序。
//搜索和计数
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 元素的数量。