numpy中的操作(三)
一、读取文件的方法
1.存文件
①存单个数组
#二进制文件
arr = np.arange(100).reshape(10,10)
np.save('save_arr',arr)
②存多个数组
#将多个数组保存在一个文件里面 使用savez函数 文件的扩展名叫.npz
arr1 = np.array([[1,2,3],[4,5,6]])
arr2 = np.arange(0,1,0.1)
np.savez('savez_arr',arr1,arr2)
③存为txt格式
#fmt='%d'表示保存为整数,delimiter=','表示以逗号隔开所有元素
np.savetxt('arr.text',arr,fmt='%d',delimiter=',')
2.读取文件
#读取文件 必须要加后缀名
#①读一个
# load_data = np.load('save_arr.npy')
# print(load_data)
#②读多个
load_data2 = np.load('savez_arr.npz')
print(load_data2['arr_0'])#第一个数组
print(load_data2['arr_1'])#第二个数组
#③读txt文件
data = np.loadtxt('arr.text',delimiter=',')
print(data)
二、numpy做简单的统计分析
1.排序
①一维数组
arr=np.random.randint(1,10,size=10)
print(arr)
#直接排序
arr.sort()
print(arr)
#[7 8 3 5 8 2 2 1 6 4]
#[1 2 2 3 4 5 6 7 8 8]
②按行排序
arr1 = np.random.randint(1,10,size=(3,3))
print(arr1)
#按行排序
arr1.sort(axis=1) #1是按照横轴排序 0是按照纵轴排序
print(arr1)
arr1.sort(axis=0)
print(arr1)
D:\anaconda\python.exe D:/数据分析/数组/利用numpy进行数据分析.py
#[[7 9 5]
# [4 3 6]
# [7 3 4]]
#[[5 7 9]
# [3 4 6]
# [3 4 7]]
#[[3 4 6]
# [3 4 7]
# [5 7 9]]
③返回下标
# argsort 返回排序后的下标 按下标排序
arr2 = np.array([1,2,6,7,0,5])
print(arr2.argsort())
#[4 0 1 5 2 3]
2.去重与重复数据
①去重
names = np.array(['小明','小花','小张','小仙女','小祖宗','小花','小花','小张'])
print(names)
#unique函数去重
print(np.unique(names))
#['小明' '小花' '小张' '小仙女' '小祖宗' '小花' '小花' '小张']
#['小仙女' '小张' '小明' '小祖宗' '小花']
②重复:tile 针对整个数组的重复
print(np.tile(names,3))
#['小明' '小花' '小张' '小仙女' '小祖宗' '小花' '小花' '小张' '小明' '小花' '小张' '小仙女' '小祖宗' '小花'
# '小花' '小张' '小明' '小花' '小张' '小仙女' '小祖宗' '小花' '小花' '小张']
repeat 按元素的重复 拆分为按行按列重复
arr = np.arange(9).reshape(3,3)
print(arr)
print('按横轴重复',arr.repeat(2,axis=0))
print('按纵轴重复',arr.repeat(2,axis=1))
3.求和
print(np.sum(arr))
print(np.sum(arr,axis=1))#按横轴求和
print(np.sum(arr,axis=0))#按纵轴求和
#36
#[ 3 12 21]
#[ 9 12 15]
4.均值
print(np.mean(arr))
print(np.mean(arr,axis=1))
print(np.mean(arr,axis=0))
#4.0
#[ 1. 4. 7.]
#[ 3. 4. 5.]
5.标准差
求标准差 所有数 减去平均数 然后所有数的平方加起来除以个数 开平方
print(np.std(arr))
print(np.std(arr,axis=1))
print(np.std(arr,axis=0))
#2.58198889747
#[ 0.81649658 0.81649658 0.81649658]
#[ 2.44948974 2.44948974 2.44948974]
6.方差
print(np.var(arr))
print(np.var(arr,axis=1))
print(np.var(arr,axis=0))
#6.66666666667
#[ 0.66666667 0.66666667 0.66666667]
#[ 6. 6. 6.]
7.最小值和最大值
#最小值
print(np.min(arr,axis=1))
print(np.min(arr,axis=0))
#[0 3 6]
#[0 1 2]
#最大值
print(np.max(arr,axis=1))
print(np.max(arr,axis=0))
#[2 5 8]
#[6 7 8]
# 返回最大或最小值的下标
print(np.argmin(arr,axis=1))
print(np.argmax(arr,axis=0))
#[0 0 0]
#[2 2 2]
8.累积和与累计积
arr = np.arange(2,10)
print(arr)
print(np.cumsum(arr))
print(np.cumprod(arr))
#[2 3 4 5 6 7 8 9]
#[ 2 5 9 14 20 27 35 44]
#[ 2 6 24 120 720 5040 40320 3628
9.众数
arr = np.arange(2,10)
result = np.bincount(arr)#正数值型求众数方法
print(np.argmax(result))
#2
10.中位数
arr = np.arange(2,10)
print(np.median(arr))
#5.5