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
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值