文章目錄
- 前言
- 一、數組的增刪改查
- 1.resize函數
- 2.append函數
- 3.insert函數
- 4.delete函數
- 5.argwhere函數
- 6.unique函數
- 二、統計函數
- 1.amax,amin函數
- 2.ptp函數
- 3.median函數
- 4.mean函數
- 5.average函數
- 6.var,std函數
前言
通過今天的學習,我掌握了numpy中有關增刪改查以及部分常用統計函數的使用方法
一、數組的增刪改查
1.resize函數
- 與reshape函數的功能相近,但可以生成任意形狀的新數組,會自動根據輸入的形狀進行元素填充
- 如果元素數量不夠,重復數組元素來填充新的形狀;若數量過多,則舍棄多余元素
array_one = np.arange(6).reshape(2, 3)
print(array_one)
print('resize 后數組:\n', np.resize(array_one, (3, 3)))
print('resize 后數組:\n', np.resize(array_one, (2, 2)))
2.append函數
- 數組與列表相似,也有append方法,用于將元素追加到數組的末尾
- append(arr, values, axis=None)
- 當指定axis時,要求添加的數組與對應維度的形狀一致
arr = np.arange(6).reshape(2,3)
print(arr)
arr_1 = np.append(arr,[[1,1,1],[1,1,1]])
print(arr_1)
arr_1 = np.append(arr,[[1,1,1],[1,1,1],[1,1,1]],axis=0)
print(arr_1)
arr_1 = np.append(arr,[[1,1,1,1],[1,1,1,1]],axis=1)
print(arr_1)
tips:可以這樣理解axis的含義:
3.insert函數
- 向數組指定索引位置插入元素
- insert(arr, idx, values, axis)
- 該函數會自動使用廣播機制
arr = np.arange(6).reshape(2,3)
arr1 = np.insert(arr,1,[6]) #未指定axis返回一維數組
print(arr1)
arr1 = np.insert(arr,1,[6],axis=0) #在索引為1的行插入[6],并自動廣播
print(arr1)
arr1 = np.insert(arr,1,[6],axis=1) #在索引為1的列插入[6],并自動廣播
print(arr1)
4.delete函數
- 刪除指定索引的元素
- delete(arr, obj, axis)
arr = np.arange(6).reshape(2,3)
arr1 = np.delete(arr,[1]) #未指定axis,先將數組轉化為一維,再刪除索引為1的元素
print(arr1)
arr1 = np.delete(arr,[1],axis=0) #刪除索引為1的行
print(arr1)
arr1 = np.delete(arr,[1],axis=1) #刪除索引為1的列
print(arr1)
5.argwhere函數
- 返回數組中非0元素的索引
- 若是多維數組,則返回包含行列索引坐標的數組
arr = np.arange(6).reshape(2,1,3)
print(arr)
print(np.argwhere(arr))
print(np.argwhere(arr<3)) #可以結合使用布爾索引
- where函數返回一個元組,功能與argwhere相似,使用更加方便
- 當where函數有三個參數時,它會根據條件來選擇元素,第一個參數是條件,第二個參數是滿足條件時選擇的值,第三個參數是不滿足條件時選擇的值
arr = np.array([1, 2, 3, 4, 5])
new_arr = np.where(arr > 3, 10, 0)
print("新數組:")
print(new_arr)
6.unique函數
- 去除數組中的重復元素
- unique(ar, return_index=False, return_inverse=False, return_counts=False, axis=None)
return_index:如果為 True,則返回新數組元素在原數組中的位置(索引)
return_inverse:如果為 True,則返回原數組元素在新數組中的位置(逆索引)
return_counts:如果為 True,則返回去重后的數組元素在原數組中出現的次數
arr = np.array([1, 2, 2, 3, 3, 3, 4, 4, 4, 4])
unique_elements, inverse_indices = np.unique(arr,return_inverse=True)
print(np.unique(arr))
print(inverse_indices) #逆索引
二、統計函數
1.amax,amin函數
- 找出數組中的最大,最小值(可以指定axis)
arr = np.arange(6).reshape(2,3)
print(arr)
print(np.amax(arr))
print(np.amax(arr,axis=0)) #找出每一列的最大值
print(np.amax(arr,axis=1)) #找出每一行的最大值
2.ptp函數
- 計算數組元素的極差值(可指定axis)
arr = np.arange(6).reshape(2,3)
print(arr)
print(np.ptp(arr))
print(np.ptp(arr,axis=0))
print(np.ptp(arr,axis=1))
3.median函數
- 將數組元素由小到大排序后取中位數(可指定axis)
arr = np.arange(6).reshape(2,3)
print(np.median(arr))
print(np.median(arr,axis=0))
print(np.median(arr,axis=1))
4.mean函數
- 計算數組元素的算數平均數(可指定axis)
arr = np.arange(6).reshape(2,3)
print(np.mean(arr))
print(np.mean(arr,axis=0))
print(np.mean(arr,axis=1))
5.average函數
- 計算數組元素的加權平均值(可指定axis)
- 相較于平均值,可以減少極差對數據均值的影響
arr = np.array([1, 2, 3, 4, 5])
weights = np.array([0.1, 0.2, 0.3, 0.2,0.2])
average_value = np.average(arr, weights=weights)
print(average_value)
6.var,std函數
- 計算數組元素的方差和標準差
arr = np.array([1, 2, 3, 4, 5])
print(np.std(arr))
print(np.var(arr)) #總體方差
print(np.var(arr,ddof=1)) #樣本方差,總體方差的無偏估計
THE END