numpy库中能够返回一些元素操作时的索引

返回每行或者每列最大值索引号的函数argmax,类似的还有argsort等

import numpy as np
data = np.sin(np.arange(20)).reshape(5,4)
print(data)
ind = data.argmax(axis=0)#求每列的最大值的索引号[2 0 3 1]
inc = data.argmax()#返回的是所有元素最大值的标号14
print( ind)
print( inc)

data_max = data[ind, range(data.shape[1])]#print(data[[2,0,3,1],[0,1,2,3]])
print(data_max)
# all(data_max == data.max(axis=0))
'''
[[ 0.          0.84147098  0.90929743  0.14112001]
 [-0.7568025  -0.95892427 -0.2794155   0.6569866 ]
 [ 0.98935825  0.41211849 -0.54402111 -0.99999021]
 [-0.53657292  0.42016704  0.99060736  0.65028784]
 [-0.28790332 -0.96139749 -0.75098725  0.14987721]]
[2 0 3 1]
14
[0.98935825 0.84147098 0.99060736 0.6569866 ]

'''

如何扩充一个矩阵呢?用tile函数。

a = np.arange(0, 40, 10)
b = np.tile(a, (3, 5)) #行扩展了三倍,列扩展了五倍
print (b)
'''
[[ 0 10 20 30  0 10 20 30  0 10 20 30  0 10 20 30  0 10 20 30]
 [ 0 10 20 30  0 10 20 30  0 10 20 30  0 10 20 30  0 10 20 30]
 [ 0 10 20 30  0 10 20 30  0 10 20 30  0 10 20 30  0 10 20 30]]
'''

注意排序,两种形式np.sort()以及array_object.sort()

a = np.array([[4, 3, 5],
              [1, 2, 1]])

b = np.sort(a, axis=1)
print (a)
print (b)

a.sort(axis=1)
print (a)
'''
a = np.array([[4, 3, 5],
              [1, 2, 1]])

b = np.sort(a, axis=1)
print ('a=',a)
print ('b=',b)

a.sort(axis=1)
print ('排序后a=',a)
'''
#返回每个元素排序时的序号(从0开始)
a = np.array([4, 3, 1, 2])
j = np.argsort(a)#得到的是a中每个元素排序的序号[2 3 1 0]
print(j)#[2 3 1 0]
print(a[j])#[1 2 3 4]把j作为索引导入,排序ok
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值