【Python】numpy方法合辑-数组查询定位

(一)argmax

numpy.argmax(a, axis=None, out=None)
# 返回沿轴的最大值的索引
#3在多次出现最大值的情况下,返回对应于第一次出现的索引。

# 参数
"""
a:数组
axis=None:默认情况下,将数组展平成一维数组,然后返回最大值的索引
"""

#demo
arr = np.arange(9).reshape(3, -1)
print(arr)
print(np.argmax(arr))  # 8 将数组展平成一维数组,然后返回最大值的索引
print(np.argmax(arr, axis=0)) # [2 2 2]

arr = np.array([1, 10, -1, 0, 6, np.nan]).reshape(2,3)
print(arr)
print(np.argmax(arr)) # 5 最大值为np.nan

(二)nanargmax

numpy.nanargmax(a, axis=None)
# 返回指定轴中的最大值的索引,忽略NAN

# 参数
"""
a:数组
axis=None:默认情况下,将数组展平成一维数组,然后返回最大值的索引
"""

#demo
arr = np.array([1, 10, -1, 0, 6, np.nan]).reshape(2,3)
print(arr)
print(np.nanargmax(arr))  # 1

(三)argmin

numpy.argmin(a, axis=None, out=None)
# 返回沿轴线的最小值的索引。
#用法与argmax类似

(四)nanargmin

numpy.nanargmin(a, axis=None)
# 返回指定轴中的最小值的索引,忽略NAN
#用法与argmin类似

(五)argwhere

numpy.argwhere(a)
# 返回满足条件a的元素的索引

#demo
arr = np.array([1, 10, -1, 0, 6,7]).reshape(2, 3)
print(arr)
indexer = np.argwhere(arr > 0)
print(indexer)
"""
[[0 0]
 [0 1]
 [1 1]
 [1 2]]
"""

(六)nonzero

numpy.nonzero(a)
#返回一个由每个维度非零元素索引组成的元组

# 参数
# a:条件

# demo
x = np.array([[3, 0, 0], [0, 4, 0], [5, 6, 0]])
indexer = np.nonzero(x)
print(indexer)
# (array([0, 1, 2, 2], dtype=int64), array([0, 1, 0, 1], dtype=int64))
print(x[indexer])
# [3 4 5 6] 根据索引获得元素 与argwhere不同,argwhere无法直接得到元素
print(np.transpose(indexer))  # 同 np.argwhere(x)

# 使用具体条件
print(np.nonzero(x>0))

(七)where

numpy.where(condition[, x, y])
# 根据条件从x或y中选择返回元素。

# 参数
# condition:条件,返回布尔数组,True则为x,False则为y

 #demo
a = np.arange(10)
print(np.where(a > 5, a * 10, a))
# [ 0  1  2  3  4  5 60 70 80 90]

a = np.arange(10)
print(np.where(a > 5))  # 返回索引(array([6, 7, 8, 9], dtype=int64),)

print(a > 5)   #布尔数组
# [False False False False False False  True  True  True  True]

(八)searchsorted

numpy.searchsorted(a, v, side='left', sorter=None)
#在数组a中插入数组v(并不执行插入操作),返回一个下标列表,这个列表指明了v中对应元素应该插入在a中那个位置上

#参数
"""
a : 1-D array_like、
输入数组。当sorter参数为None的时候,a必须为升序数组;
否则,sorter不能为空,存放a中元素的index,用于反映a数组的升序排列方式。

v : array_like
插入a数组的值,可以为单个元素,list或者array。

side : {'left', 'right'}, 默认left
对于left,返回的是与这个元素相等的元素的位置
对于right,返回的是与这个元素相等的元素的下一个位置
没有符合的元素,
如果这个元素比a的最小值还小,就返回0,
如果比a的最大值还大,就返回数组a的长度N
如果这个不存在的元素位于数组a的中间时,返回第一个比它大的那个元素的位置

sorter : 1-D array_like,
存放a数组元素升序排序的index。使用argsort获得
"""

# demo
a = np.array([-1, 0, 1, 4, 10, 19])  # a按照升序
print(np.searchsorted(a, 1))  # 2
print(np.searchsorted(a, 1, side='right'))  # 3
print(np.searchsorted(a, 9))  # 4

a = np.array([1, 6, 0, 2, 10, 11])  # a未排序
indexer = np.argsort(a)
print(np.searchsorted(a, 6, sorter=indexer))  # 3
print(np.searchsorted(a, [0, 6, 9], sorter=indexer))  # [0 3 4]

(九)extract

numpy.extract(condition, arr)
# 返回满足某些条件的数组元素。

#参数
"""
condition:条件,返回布尔数组,
arr:与条件大小相同的输入数组
"""

#demo
arr = np.array([1, 10, -1, 0, 6, 7]).reshape(2, 3)
print(np.extract(arr > 0, arr))
print(np.where(arr > 0))
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值