龙空技术网

python数据分析numpy基础之argmin求数组最小值索引

梯阅线条 88

前言:

目前姐妹们对“c语言min函数求数组最小值”大概比较注意,兄弟们都需要知道一些“c语言min函数求数组最小值”的相关内容。那么小编同时在网摘上网罗了一些有关“c语言min函数求数组最小值””的相关文章,希望各位老铁们能喜欢,你们一起来了解一下吧!

1 python数据分析numpy基础之argmin求数组最小值索引

python的numpy库的argmin()函数,用于获取沿指定轴的最小值的索引。

用法

 numpy.argmin(a, axis=None, out=None, *, keepdims=<no value>)

描述

argmin()返回沿指定轴的最小值的索引。

入参axis表示指定轴,默认为None表示整个数组的最小值的索引而不是某个轴的最小值,即转为一维数组后的最小值的索引。axis只能为整数,不支持整数元组。

入参keepdims表示是否保留指定轴的尺寸为1,默认为False,不保留。

1.1 入参a

numpy.argmin()的入参a,为必选入参,可以为数组、列表、元组。

 >>> import numpy as np # 入参a为列表 >>> np.argmin([-5,-10,0,1,5]) 1 # 入参a为元组 >>> np.argmin((-5,-10,0,1,5)) 1 # 入参a为数组 >>> np.argmin(np.array((-5,-10,0,1,5))) 1
1.2 入参axis为整数

numpy.argmin()的入参axis为可选入参,只能为整数(不支持元组),范围[0, ndim),默认为None,表示求整个数组的最小值的索引,若为多维数组则转换为一维数组来获取最小值的索引。

若axis=n为整数,则对沿指定轴n的元素求最小值的索引,并且只返回指定轴的索引,其他轴索引不返回。

若axis=负数,则-1对应最后一个轴,-2倒数第2个轴,依此类推。

最小值多次出现时,argmin()返回第一次出现的索引。

np.ndindex(ar3.shape) 获取指定形状数组的索引迭代器对象,遍历迭代器索引获取数组元素。

 >>> import numpy as np >>> ar3=np.array([[[12, 13, 8, 15 ],         [ 19,  25,  16,  5],         [ 18,  29, 10, 31]],         [[9,  11,  21,  3],         [16, 17, 18, 19],         [20, 3, 22, 23]]]) # axis默认为None,返回整个数组的最小值的索引 >>> np.argmin(ar3) 15 # ar3最小值为3 >>> np.min(ar3) 3 # axis=None时,ar3相当于一维数组 >>> ar3.reshape(ar3.size) array([12, 13,  8, 15, 19, 25, 16,  5, 18, 29, 10, 31,  9, 11, 21,  3, 16,        17, 18, 19, 20,  3, 22, 23]) # 最小值多次出现时,返回第一次出现的索引 # 索引为15的值为最小值3,为第一次出现的索引,索引argmin()返回15 >>> ar3.reshape(ar3.size)[15] 3 # 索引为21的值为最小值3 >>> ar3.reshape(ar3.size)[21] 3 # np.ndindex(ar3.shape) 获取指定形状数组的索引迭代器对象 >>> ar3vis=[str(ar3[i])+str(i) for i in np.ndindex(ar3.shape)] >>> ar3vi=np.array(ar3vi).reshape(ar3.shape) # 获取ar3数组和其索引 # n维数组由n个轴的索引组成 # 比如三维数组索引(1, 0, 0),分别表示0/1/2轴的索引 >>> ar3vi array([[['12(0, 0, 0)', '13(0, 0, 1)', '8(0, 0, 2)', '15(0, 0, 3)'],         ['19(0, 1, 0)', '25(0, 1, 1)', '16(0, 1, 2)', '5(0, 1, 3)'],         ['18(0, 2, 0)', '29(0, 2, 1)', '10(0, 2, 2)', '31(0, 2, 3)']],         [['9(1, 0, 0)', '11(1, 0, 1)', '21(1, 0, 2)', '3(1, 0, 3)'],         ['16(1, 1, 0)', '17(1, 1, 1)', '18(1, 1, 2)', '19(1, 1, 3)'],         ['20(1, 2, 0)', '3(1, 2, 1)', '22(1, 2, 2)', '23(1, 2, 3)']]],       dtype='<U11') # axis=0,只返回沿0轴最小值的索引,0轴大小为2,索引只有0,1 >>> np.argmin(ar3,axis=0) array([[1, 1, 0, 1],        [1, 1, 0, 0],        [0, 1, 0, 1]], dtype=int64) # min()获取0轴最小值,argmin()获取0轴最小值的索引 # 比如9的索引为(1, 0, 0),取0轴索引1 >>> np.min(ar3,axis=0) array([[ 9, 11,  8,  3],        [16, 17, 16,  5],        [18,  3, 10, 23]]) # axis=1,只返回沿1轴最小值的索引,1轴大小为3,索引只有0,1,2 >>> np.argmin(ar3,axis=1) array([[0, 0, 0, 1],        [0, 2, 1, 0]], dtype=int64) # 比如3(1, 2, 1),取1轴索引2 >>> np.min(ar3,axis=1) array([[12, 13,  8,  5],        [ 9,  3, 18,  3]]) # axis=2,只返回沿2轴最小值的索引,2轴大小为4,索引只有0,1,2,3    >>> np.argmin(ar3,axis=2) array([[2, 3, 2],        [3, 0, 1]], dtype=int64) # 比如 5(0, 1, 3),取2轴索引3 >>> np.min(ar3,axis=2) array([[ 8,  5, 10],        [ 3, 16,  3]]) # axis=负数,则-1对应最后一个轴,-2倒数第2个轴,依此类推。 >>> np.argmin(ar3,axis=-1) array([[2, 3, 2],        [3, 0, 1]], dtype=int64)
1.3 入参keepdims

numpy.argmin()的入参keepdims为可选入参,只能为False或True,默认为False。

keepdims为False则不保留指定轴的尺寸,即返回最小值索引的数组形状,不包括指定轴。

keepdims为True则保留指定轴的持仓为1,即返回最小值索引的数组形状,包括指定轴且大小为1。

 >>> import numpy as np >>> ar3=np.array([[[12, 13, 8, 15 ],         [ 19,  25,  16,  5],         [ 18,  29, 10, 31]],         [[9,  11,  21,  3],         [16, 17, 18, 19],         [20, 3, 22, 23]]]) >>> kdnt=np.argmin(ar3,keepdims=True) >>> kdnf=np.argmin(ar3,keepdims=False) >>> kdn=np.argmin(ar3) # keepdims=True,最小值索引数组,保留指定轴,且尺寸为1 >>> kdnt.shape,kdnt.ndim ((1, 1, 1), 3) # keepdims=False,最小值索引数组,删除指定轴 >>> kdnf.shape,kdnf.ndim ((), 0) # keepdims默认False,最小值索引数组,删除指定轴 >>> kdn.shape,kdn.ndim ((), 0) >>> kdnt,kdnf,kdn (array([[[15]]], dtype=int64), 15, 15) >>> kd0t=np.argmin(ar3,axis=0,keepdims=True) >>> kd0=np.argmin(ar3,axis=0) # True保留axis=0且尺寸为1 >>> kd0t.shape,kd0t.ndim ((1, 3, 4), 3) # False删除axis=0 >>> kd0.shape,kd0.ndim ((3, 4), 2) >>> kd0t array([[[1, 1, 0, 1],         [1, 1, 0, 0],         [0, 1, 0, 1]]], dtype=int64) >>> kd0 array([[1, 1, 0, 1],        [1, 1, 0, 0],        [0, 1, 0, 1]], dtype=int64) >>> kd1t=np.argmin(ar3,axis=1,keepdims=True) >>> kd1=np.argmin(ar3,axis=1) # True保留axis=1且尺寸为1 >>> kd1t.shape,kd1t.ndim ((2, 1, 4), 3) # False删除axis=1 >>> kd1.shape,kd1.ndim ((2, 4), 2) >>> kd1t array([[[0, 0, 0, 1]],         [[0, 2, 1, 0]]], dtype=int64) >>> kd1 array([[0, 0, 0, 1],        [0, 2, 1, 0]], dtype=int64)
2 END

本文首发微信公众号:梯阅线条

更多内容参考python知识分享或软件测试开发目录。

标签: #c语言min函数求数组最小值