NumPy-簡單的統計分析

數組進行簡單統計分析

直接排序

(1)sort 函數是最常用的排序方法。  格式:  arr.sort();
(2)sort 函數也可以指定一個 axis 參數,使得 sort 函數可以沿着指定軸對數據集進行排序。axis=1 爲沿橫軸排序; axis=0 爲沿縱軸排序;

間接排序

(1)argsort 函數返回值爲重新排序值的下標。  格式:  arr.argsort();

(2)lexsort 函數返回值是按照最後一個傳入數據排序的。  格式:  np.lexsort((a,b,c));

去重與重複數據

(1)通過 unique 函數可以找出數組中的唯一值並返回已排序的結果。  格式:  np.unique ();

(2)tile 函數主要有兩個參數,  參數“A”指定重複的數組,  參數“reps”指定重複的次數。  格式:  np.tile(A ,reps);

(3)repeat 函數主要有三個參數,參數“A”是需要重複的數組元素,參數“reps”是重複次數,參數“axis”指定沿着哪個軸進行重複,axis = 0 表示按行進行元素重複;axis =1 表示按列進行元素重複。  格式:  np.repeat(A, reps, axis=None);

 

1.直接排序

(1)一維數組的直接排序

import numpy as np

arr = np.random.randint(1,10,size=10)   # 隨機生成10個數的一維數組
print(arr) 
# 結果例如 : [3 8 5 8 7 1 4 5 4 3]

arr.sort()
print('排序後: ',arr) 
# 結果例如 : [1 3 3 4 4 5 5 7 8 8]

(2)二維數組的直接排序

import numpy as np

# (1)按行排序
arr2 = np.random.randint(1,10,size=[3,3]) # 隨機生成3*3的二維數組
print(arr2)
# 結果例如 :
# [[9 8 4]
#  [2 2 1]
#  [4 1 8]]

arr2.sort()   
print('按行排序後: ',arr2) 
# 結果例如 : 
# [[4 8 9]
#  [1 2 2]
#  [1 4 8]]


# (2)按列排序
arr3 = np.random.randint(1,10,size=[3,3]) # 隨機生成3*3的二維數組
print(arr3)
# 結果例如 :
# [[5 6 2]
#  [5 3 8]
#  [1 3 7]]

arr3.sort(axis = 0)   # 按列排序
print('按列排序後: ',arr3) 
# 結果例如 : 
# [[1 3 2]
#  [5 3 7]
#  [5 6 8]]

 

2.間接排序

(1)argsort(函數返回值是重新排序後的下標)

import numpy as np

arr = np.array([2,3,6,8,0,7])
result = arr.argsort()
print(result)
# 結果: [4 0 1 2 5 3]

(2)lexsort(函數返回值是按最後一個傳入的數據排序)

import numpy as np

arr1 = np.array([3,2,6,4,5])
arr2 = np.array([50,30,40,20,10])
arr3 = np.array([400,300,600,100,200])

result = np.lexsort((arr1,arr2,arr3))     # 按最後一個傳入的數據排序,最後一個是arr3
print(result)
# 結果: [3 4 1 0 2]

 

3.去重與重複數據

(1)unique() 去重數據

import numpy as np

names = np.array(['小明','蘑菇','小旭','小明','小旭'])

print(names)
# 結果: ['小明' '蘑菇' '小旭' '小明' '小旭']

arr = np.unique(names)
print('去重後的數組爲: ',arr)
# 結果: ['小旭' '小明' '蘑菇']

(2)title():  針對整個數組的重複,不針對單獨元素的重複;   

格式:  np.tile(數組,重複次數);

import numpy as np

names = np.array(['小明','蘑菇','小旭','小明'])

arr2 = np.tile(names,3)
print('重複後的數組爲: ',arr2)
# 結果: ['小明' '蘑菇' '小旭' '小明' '小明' '蘑菇' '小旭' '小明' '小明' '蘑菇' '小旭' '小明']

(3)repeat():  主要針對元素重複;

格式:  np.repeat(數組,重複次數,重複格式)  或  name.repeat(重複次數,重複格式) ;    

注意:  axis = 0按行重複;   axis = 1按列重複;

(3.1)按行重複

import numpy as np

name = np.arange(1,10).reshape((3,3))
print(name)
# 結果:
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]

arr = np.repeat(name,2,axis = 0) # 按行重複  
# arr = name.repeat(2,axis = 0) # 2個參數的寫法,效果如上行代碼
print(arr)
# 結果:
# [[1 2 3]
#  [1 2 3]
#  [4 5 6]
#  [4 5 6]
#  [7 8 9]
#  [7 8 9]]

(3.2)按列重複 

import numpy as np

name = np.arange(1,10).reshape((3,3))
print(name)
# 結果:
# [[1 2 3]
#  [4 5 6]
#  [7 8 9]]

# arr = np.repeat(name,2,axis = 1) # 按列重複 
arr = name.repeat(2,axis = 1) # 2個參數的寫法,效果如上行代碼
print(arr)
# 結果:
# [[1 1 2 2 3 3]
#  [4 4 5 5 6 6]
#  [7 7 8 8 9 9]]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章