numpy下 输入和输出

输入和输出

numpy 二进制文件

numpy专用的二进制类型有npy和npz,其中npy以二进制方式存储,npz为一压缩文件。
save()函数将数组保存在npy文件中
load()函数将npy、npz或pickled文件中的内容加载出来

import numpy as np

# numpy.save(file, arr)
# numpy.load(file)
outfile = r'.\test.npy'
np.random.seed(20200619) # 保证生成的随机数具有可预测性
# 从一个均匀分布[low,high)中随机采样,定义域是左闭右开,即包含low,不包含high.
x = np.random.uniform(0,1,[3,5])
np.save(outfile,x)
print(x)
y = np.load(outfile)
print(y)

savez()函数将数组保存在npz压缩文件中,其中每个文件都是npy文件,每个文件中的数组名可以自动生成为arr_0,arr_1,…,也可以指定名字。

import numpy as np

# numpy.savez(file)
outfile = r'.\test1.npz'
x = np.linspace(0,np.pi,5) # 产生有5个元素的等差数列
y = np.sin(x)
z = np.cos(x)
print(x)
print(y)
print(z)
np.savez(outfile,x,y,z_d = z) # 将x,y,z数组保存到压缩文件test1.npy
data = np.load(outfile)
# 控制输出方式,小数不需要以科学计数法的形式输出
np.set_printoptions(suppress=True)
print(data.files) # 压缩文件内的文件
print(data['arr_0']) # x数组
print(data['arr_1']) # y数组
print(data['z_d']) # z数组

文本文件

处理文本文件时可使用savetxt()、loadtxt()和genfromtxt()函数。
savetxt()函数将一个数组保存到txt文件中
loadtxt()函数将txt文件中的数据加载出来
genfromtxt()函数可以处理结构数组和缺失数据

import numpy as np

# 写入和读出TXT文件
# numpy.savetxt(fname, X) X:存入文件的数组
outfile = r'.\test2.txt'
# arange函数返回一个有终点和起点的固定步长的排列
# reshape函数改变数组的格式,参数-1可以在已知一个参数维度情况下计算出另一个数组维度
x = np.arange(0,10).reshape(2,-1)
print(x)
np.savetxt(outfile,x) # 将数组x存入test2.txt文件中
y = np.loadtxt(outfile) # 将文件中内容加载到y
print(y)
import numpy as np

# 写入和读出CSV文件
outfile = r'.\test3.csv'
x = np.arange(0,10,0.5).reshape(4,-1)
print(x)
np.savetxt(outfile,x,fmt='%.3f',delimiter=',') # 保留3位小数并以","分割字符串,存入csv文件
y = np.loadtxt(outfile,delimiter=',')
print(y)
import numpy as np

outfile = r'.\data.csv'
x = np.loadtxt(outfile,delimiter=',',skiprows=1) # skiprows:跳过第一行表头
print(x)
# usecols:指定要读取1,2列
x = np.loadtxt(outfile, delimiter=',', skiprows=1, usecols=(1, 2))
print(x)
# unpack:将1,2列赋值给val1和val2。
val1, val2 = np.loadtxt(outfile, delimiter=',', skiprows=1, usecols=(1, 2), unpack=True)
print(val1)
print(val2)

给出data.csv及data1.csv文件进行缺失数据处理的比较

data.csv文件中为

id,value1,value2,value3
1,123,1.4,23
2,110,0.5,18
3,164,2.1,19

data1.csv文件中为

id,value1,value2,value3
1,123,1.4,23
2,110,18
3,2.1,19

import numpy as np

outfile = r'.\data.csv'
# names为True时,程序将把第一行作为列名称
x = np.genfromtxt(outfile,delimiter=',',names=True)
print(x)
print(type(x)) # ndarray多维数组
print(x.dtype) # <f8 第一个字符是字节序,< 表示小端
print(x['id'])
print(x['value1'])
print(x['value2'])
print(x['value3'])

使用genfromtxt()函数处理数据缺失文件

import numpy as np

outfile = r'.\data1.csv' # 数据缺失文件
x = np.genfromtxt(outfile, delimiter=',', names=True)
# 使用genfromtxt函数,缺失数据以nan代替
print(x)
print(type(x))
print(x.dtype)
print(x['id'])
print(x['value1'])
print(x['value2'])
print(x['value3'])

文本格式选项

使用set_printoptions()函数可以控制输出格式
get_printoptions()函数可以返回当前的输出选项

numpy.set_printoptions(precision=None,threshold=None, linewidth=None,suppress=None)

import numpy as np

# precision :设置浮点精度,控制输出的小数点个数,默认是8。
# threshold :概略显示,超过该值则以“…”的形式来表示,默认是1000。
# linewidth :用于确定每行多少字符数后插入换行符,默认为75。
# suppress :当suppress=True ,表示小数不需要以科学计数法的形式输出,默认是False。
np.set_printoptions(precision=4) # 输出保留四位小数
x = np.array([1.123456789])
print(x)

np.set_printoptions(threshold=20) # 超过20以“…”的形式表示
x = np.arange(50)
print(x)

np.set_printoptions(threshold=np.iinfo(np.int).max) # 临时极大值
print(x)

eps = np.finfo(float).eps # 取一个非负极小值eps
x = np.arange(4.)
x = x ** 2 - (x + eps) ** 2
print(eps)
print(x)
np.set_printoptions(suppress=True) # 小数不以科学计数法的形式输出
print(x)

x = np.linspace(0,10,10) # 产生从0到10的等差数列,数量为10
print(x)
np.set_printoptions(precision=2,suppress=True,threshold=5)
print(x)

# np.get_printoptions:返回当前打印选项
x = np.get_printoptions()
print(x)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值