文章目录
前言
通过今天的学习,我掌握了numpy中有关增删改查以及部分常用统计函数的使用方法
一、数组的增删改查
1.resize函数
- 与reshape函数的功能相近,但可以生成任意形状的新数组,会自动根据输入的形状进行元素填充
- 如果元素数量不够,重复数组元素来填充新的形状;若数量过多,则舍弃多余元素
python
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时,要求添加的数组与对应维度的形状一致
python
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)
- 该函数会自动使用广播机制
python
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)
python
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元素的索引
- 若是多维数组,则返回包含行列索引坐标的数组
python
arr = np.arange(6).reshape(2,1,3)
print(arr)
print(np.argwhere(arr))
print(np.argwhere(arr<3)) #可以结合使用布尔索引
- where函数返回一个元组,功能与argwhere相似,使用更加方便
- 当where函数有三个参数时,它会根据条件来选择元素,第一个参数是条件,第二个参数是满足条件时选择的值,第三个参数是不满足条件时选择的值
python
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,则返回去重后的数组元素在原数组中出现的次数
python
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)
python
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)
python
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)
python
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)
python
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)
- 相较于平均值,可以减少极差对数据均值的影响
python
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函数
- 计算数组元素的方差和标准差
python
arr = np.array([1, 2, 3, 4, 5])
print(np.std(arr))
print(np.var(arr)) #总体方差
print(np.var(arr,ddof=1)) #样本方差,总体方差的无偏估计
THE END