Python-Numpy语法总结-数组的排序及重塑

本文总结了Python Numpy库中用于一维和二维数组排序的方法,包括使用.argsort()按索引排序和.sort()按值排序。同时详细介绍了数组重塑的技巧,如.reshape()、.ravel()和.tile()函数的用法。
摘要由CSDN通过智能技术生成

一维数组排序

np.random.seed(2)
a=np.random.randn(5)
print(a)
np.argsort(a) #返回一个索引的排序(默认升序)
[-0.41675785 -0.05626683 -2.1361961   1.64027081 -1.79343559]

array([2, 4, 0, 1, 3], dtype=int64)
print(a.argsort()) #等价于np.argsort(a)
[2 4 0 1 3]

二维数组排序

.argsort() 按索引排序

np.random.seed(2)
b=np.random.randn(4,3)
b.argsort(axis=0) #按列排序
b.argsort(axis=1) #按行排序
print("b=",b)
print(b.argsort(axis=0))
b= [[-0.41675785 -0.05626683 -2.1361961 ]
 [ 1.64027081 -1.79343559 -0.84174737]
 [ 0.50288142 -1.24528809 -1.05795222]
 [-0.90900761  0.55145404  2.29220801]]
[[3 1 0]
 [0 2 2]
 [2 0 1]
 [1 3 3]]

.sort() 按值排序

np.sort(b,axis=0) #每一列都会进行升序排列。
array([[-0.90900761, -1.79343559, -2.1361961 ],
       [-0.41675785, -1.24528809, -1.05795222],
       [ 0.50288142, -0.05626683, -0.84174737],
       [ 1.64027081,  0.55145404,  2.29220801]])
sorted(b,key=lambda x:x[1]) #按第2列排序
#默认进行升序排序,可以通过reverse参数进行设定
[array([ 1.64027081, -1.79343559, -0.84174737]),
 array([ 0.50288142, -1.24528809, -1.05795222]),
 array([-0.41675785, -0.05626683, -2.1361961 ]),
 array([-0.90900761,  0.55145404,  2.29220801])]
sorted(b,key=lambda x:x[1],reverse = True) #按第2列排序
#默认进行升序排序,可以通过reverse参数进行设定
[array([-0.90900761,  0.55145404,  2.29220801]),
 array([-0.41675785, -0.05626683, -2.1361961 ]),
 array([ 0.50288142, -1.24528809, -1.05795222]),
 array([ 1.64027081, -1.79343559, -0.84174737])]
b.sort() #直接作用于数组b,每一行都是升序
b
array([[-2.1361961 , -0.41675785, -0.05626683],
       [-1.79343559, -0.84174737,  1.64027081],
       [-1.24528809, -1.05795222,  0.50288142],
       [-0.90900761,  0.55145404,  2.29220801]])

数组的重塑

.reshape()

np.arange(15).reshape(3,5)
array([[ 0,  1,  2,  3,  4],
       [ 5,  6,  7,  8,  9],
       [10, 11, 12, 13, 14]])

.ravel()

a=np.array([[1,2,3],[4,5,6]])
a.ravel()#将一个数组变成一个扁平数组。
array([1, 2, 3, 4, 5, 6])
a=np.array([[1,2,3],[4,5,6]])
a.ravel()#将一个数组变成一个扁平数组。
array([1, 2, 3, 4, 5, 6])
a.ravel(order="F") #order="F"表示数组以Fortran语言格式存储
array([1, 4, 2, 5, 3, 6])

.tile()

np.tile(np.array([[1,2],[3,4]]),(3,3))
array([[1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4],
       [1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4],
       [1, 2, 1, 2, 1, 2],
       [3, 4, 3, 4, 3, 4]])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值