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

一维数组排序

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]])

猜你喜欢

转载自blog.csdn.net/gracejpw/article/details/103420139
今日推荐