【python学习笔记】22:numpy文件读写和一些常量
*读写文件
>>> import numpy as np
>>> x=np.random.rand(4,10) #创建4行10列的数组
>>> np.save("data.npy",x) #保存到文件中去
>>> y=np.load("data.npy") #读出来
>>> y
array([[ 0.05172888, 0.78455176, 0.99746837, 0.98090592, 0.05521975,
0.06737037, 0.63083544, 0.44254825, 0.93834621, 0.36318013],
[ 0.29050345, 0.14517367, 0.61757958, 0.50665998, 0.55011553,
0.13645424, 0.81366777, 0.33778508, 0.48264842, 0.97306076],
[ 0.61854519, 0.15586311, 0.30774871, 0.64933693, 0.43323761,
0.24155786, 0.85237898, 0.83246228, 0.03486411, 0.31674452],
[ 0.87512563, 0.16648195, 0.05647408, 0.98138101, 0.97925956,
0.90027845, 0.78026884, 0.71574533, 0.25185204, 0.21767181]])
默认情况下数组是以未压缩的原始二进制格式保存在了npy文件里,用numpy的save可以保存进去,用numpy的load可以读出并返回(用numpy的save写进去的数据)。
>>> a_mat=np.matrix([3,5,7]) #创建一个矩阵
>>> a_mat.tostring() #转换成字节串
b"x03x00x00x00x05x00x00x00x07x00x00x00"
使用numpy矩阵的成员函数tostring()可以把它转换成一个字节串,可以用write()将它写进二进制文件中去,然后用read可以将它还原(这是python自己读写的知识)。
>>> a_mat.dumps() #将矩阵的数据转存为字符串(序列化)
b"x80x02cnumpy.core.multiarray
_reconstruct
qx00cnumpy.matrixlib.defmatrix
matrix
qx01Kx00x85qx02c_codecs
encode
qx03Xx01x00x00x00bqx04Xx06x00x00x00latin1qx05x86qx06Rqx07x87qx08Rq (Kx01Kx01Kx03x86q
cnumpy
dtype
qx0bXx02x00x00x00i4qx0cKx00Kx01x87q
Rqx0e(Kx03Xx01x00x00x00<qx0fNNNJxffxffxffxffJxffxffxffxffKx00tqx10bx89hx03Xx0cx00x00x00x03x00x00x00x05x00x00x00x07x00x00x00qx11hx05x86qx12Rqx13tqx14b."
>>> np.loads(_)
matrix([[3, 5, 7]])
使用dumps()转换到的信息可以用numpy的loads()还原。注意和tostring()的区别。
>>> a_mat.dump("x.dat") #将矩阵存储为指定文件
>>> np.load("x.dat")
matrix([[3, 5, 7]])
另外矩阵的成员函数dump()也可以将矩阵存储到指定文件中去,可以用numpy的load()还原它。
注意,numpy的load传入的是文件名字符串,读取其中的信息并反序列化;numpy的loads传入的是序列化后的字符串,直接作反序列化。
*numpy提供的一些常量
>>> np.Inf #无穷大
inf
>>> np.NAN #非数字
nan
>>> np.Infinity #无穷大
inf
>>> np.MAXDIMS #数组的最大维度
32
>>> np.NINF #负无穷大
-inf
>>> np.NaN #非数字
nan
>>> np.NZERO #负0
-0.0
这些常量在一些特殊的场合可能会使用到。
声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。