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]])
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章