Numpy函数中的max, amax, argmax,where的解释

Numpy函数中的max, amax, argmax,where的解释

  注:本文用得IDLE,写了一些自己的浅显理解,如有错误,请指正

max

  np.max()和np.amax()等价函数,求得数组中的第一个最大值,ndarray和array通用,但是得不到索引值

>>> array = np.array([4, 5, 9, 10, 7, 8])
>>> np.max(array) #np.amax(array)得到得结果一样
>>> 10
>>> ndarray = np.array([[1, 2, 3, 4], [4, 3 , 2, 1], [5, 6 ,7, 8], [8, 7, 6, 5]])
>>> ndarray
array([[1, 2, 3, 4],
       [4, 3, 2, 1],
       [5, 6, 7, 8],
       [8, 7, 6, 5]])
>>> np.max(ndarray) #np.amax(ndarray)得到得结果一样
>>> 8

  多维数组可以加参数axis = 0, 1, …(当然,一维数组的axis为0)等来获得某一维度中的最大值并返回列表,如下所示:当axis = 0时获取每一列中的第一个最大值

>>> ndarray
array([[1, 2, 3, 4],
       [4, 3, 2, 1],
       [5, 6, 7, 8],
       [8, 7, 6, 5]])
>>>  # 当axis = 0,时获取每一列中的第一个最大值
>>> np.amax(ndarray, axis = 0)
>>> array([8, 7, 7, 8])
>>>  # 当axis = 1,时获取每一行中的第一个最大值
>>>> np.amax(ndarray, axis = 1)
>>> array([4, 4, 8, 8])
argmax

  获得第一个最大值的索引,切记索引从0开始,如下所示:

>>> array
>>> array([ 4,  5,  9, 10,  7,  8])
>>> np.argmax(array) 
>>> 3

  在ndarray中,要加上axis,否则python会把ndarray转化为array,得到的值为array中的第一个最大值的索引

>>> ndarray
array([[1, 2, 3, 4],
       [4, 3, 2, 1],
       [5, 6, 7, 8],
       [8, 7, 6, 5]])
>>> np.argmax(ndarray)
>>> 11

  当加上axis时:

>>> ndarray
array([[1, 2, 3, 4],
       [4, 3, 2, 1],
       [5, 6, 7, 8],
       [8, 7, 6, 5]])
>>>  # 当axis = 0,时获取每一列中的第一个最大值的索引
>>> np.argmax(ndarray, axis = 0)
>>> array([3, 3, 2, 2], dtype=int64)
>>>  # 当axis = 1,时获取每一行中的第一个最大值的索引
>>> np.argmax(ndarray, axis = 1)    
>>> array([3, 0, 3, 0], dtype=int64)
where

  where返回的是一个坐标,为元组,在一维数组中

>>> array
>>> array([ 4,  5,  9, 10,  7,  8])
>>> np.where(array == np.max(array)) 
>>> (array([3], dtype=int64),)
>>>> type(np.where(array == np.max(array)))   
>>> <class 'tuple'>

  二维数组中得到二维元组,可以通过索引来访问每一个值,tuple[0][0]为第一个值,其实和列表获取值的方式一样

>>> ndarray
array([[1, 2, 3, 4],
       [4, 3, 2, 1],
       [5, 6, 7, 8],
       [8, 7, 6, 5]])
>>> np.where(ndarray == np.max(ndarray)) 
>>> (array([2, 3], dtype=int64), array([3, 0], dtype=int64))

  当然,where的用法为np.where(condition, x, y),当满足condition时,输出x,否则输出y,如下所示:

>>> np.where(array > 5, 1, -1)
>>> array([-1, -1,  1,  1,  1,  1])

  当没有x和y时,则输出满足condition中元素为True的坐标,第一个介绍的就是没有x,y的情况,我们可以把ndarray == np.max(ndarray)输出来看:

>>> ndarray == np.max(ndarray)
array([[False, False, False, False],
       [False, False, False, False],
       [False, False, False,  True],
       [ True, False, False, False]])

  我们可以看到有两个True,故坐标为([2, 3], [3, 0])

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值