Numpy学习第一天——输入输出

二进制文件

  • save(filename, arr):
    将一个numpy的多维数组保存为npy格式的二进制文件,第一行以文本形式保存了数组的源信息,如ndim,dtype,shape
  • savez(filename, *args, **kwds):
    将多个bumpy的多维数组保存为多个npy文件的压缩文件格式npz
  • load():
    识别npz文件,返回类似字典的对象,可通过矩阵名获取数组的内容
# 尝试save()
import numpy as np  # 导包
outfile = r'.\test.npy'  # 写出的文件名,r表示不对转义字符组合进行转义
np.random.seed(20200619)
x = np.random.uniform(0, 1, [3, 5])  # 3*5的矩阵,元素为均匀分布的随机数
np.save(outfile, x)  # 保存成文件
y = np.load(outfile)  # 读取文件
print(y)

运行结果:
在这里插入图片描述

# 尝试savez()
import numpy as np
outfile = r'.\test.npz'
x = np.linspace(0, np.pi, 5)
y = np.sin(x)
z = np.cos(x)
np.savez(outfile, x, y, z_d=z)  # 数组x,y使用了默认的名字,z使用了命名参数作为名字
data = np.load(outfile)  # 加载npz文件
np.set_printoptions(suppress=True)  # 设置打印格式选项,这里强制使用小数点形式
print(data.files)  # 打印包含的数组名
print(data['arr_0'])
print(data['arr_1'])
print(data['z_d'])

运行结果:
在这里插入图片描述

文本文件

numpy.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='\n', header='', footer='', comments='# ', encoding=None)
  • fname:文件名,文件路径
  • X:存入文件的数组、
  • fmt:写入文件中的每个字符串的字符串格式
  • delimiter:字符串分割符
numpy.loadtxt(fname, dtype=float, comments='#', delimiter=None, converters=None, skiprows=0, usecols=None, unpack=False, ndmin=0, encoding='bytes', max_rows=None)
  • fname:同上
  • dtype:numpy数据类型
  • comments:字符串或字符串组成的列表,默认为# , 表示注释字符集开始的标志
  • skiprows:跳过前面多少行
  • usecols:元组, 用来指定要读取数据的列(第一列为0)
  • unpack:当加载多列数据时是否需要将数据列进行解耦赋值给不同的变量
# 读写txt文件
import numpy as np
outfile = './test.txt'
x = np.arange(0, 10).reshape(2, 5)  # 重塑,2*5矩阵
np.savetxt(outfile, x)
y = np.loadtxt(outfile)
print(y)

在这里插入图片描述

# 读写csv文件
import numpy as np
outfile = './test.csv'
x = np.arange(0, 10, 0.5).reshape(4, 5)
np.savetxt(outfile, x, fmt='%.3f', delimiter=',')
y = np.loadtxt(outfile, delimiter=',')
print(y)

在这里插入图片描述

文本格式选项

numpy.set_printoptions(precision=None,threshold=None, edgeitems=None,linewidth=None, suppress=None, nanstr=None, infstr=None,formatter=None, sign=None, floatmode=None, **kwarg)
  • precision:设置精度,控制输出小数位
  • threshold:概略显示,超过该值以“…”显示
  • linewidth:每行多少字符后换行
  • suppress:为真时,不以科学计数法表示
  • nanstr:Not a number,一种特殊的数,默认为“nan”
  • infstr:无穷大,一种特殊的数,默认为“inf”
import numpy as np
np.set_printoptions(precision=4)  # 精度设为4
x = np.array([1.123456789])  # 转为numpy格式的数组
print(x)
np.set_printoptions(threshold=20)  # 每行20个字符
x = np.arange(50)  # 序列
print(x)
np.set_printoptions(threshold=np.iinfo(np.int).max)  # np.int的最大值
print(x)
eps = np.finfo(float).eps # epsilon,意为很小很小的数,趋近于零
x = np.arange(4.)
x = x ** 2 - (x + eps) ** 2
print(x)
np.set_printoptions(suppress=True)
print(x)
x = np.linspace(0, 10, 10)
print(x)
np.set_printoptions(precision=2, suppress=True, threshold=5)
print(x)

练习

只打印或显示numpy数组rand_arr的小数点后3位:

  • rand_arr = np.random.random([5, 3])
np.set_printoptions(precision=3)

将numpy数组a中打印的项数限制为最多6个元素:

a = np.arange(0, 100)
np.set_printoptions(threshold=6)

打印完整的numpy数组a而不中断:

np.set_printoptions(threshold=np.iinfo(a.dtype).max)

总结

python的函数的一大特点是控制参数很多,很多时候要自己去查阅文档了解参数的含义。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值