#使用数组的方法tofile和numpy的fromfile方法读取#
使用数组的方法函数tofile可以方便地将数组中数据以二进制的格式写进文件。tofile输出的数据没有格式,因此用numpy.fromfile读回来的时候需要自己格式化数据示例:
#coding=utf-8
import numpy as np
arr1 = np.array([20, 14, 15, 20, 50, 61],dtype=np.int32)
#使用tofile存入到二进制文件中
arr1.tofile("myarr.bin")
#可以看出在使用fromfile时,如果不指定dtype且与存入文件时的数组类型一直,得到的值都与存入前不一致
arr2 = np.fromfile("myarr.bin")
print arr2
arr3 = np.fromfile("myarr.bin",dtype=np.float32)
print arr3
arr4 = np.fromfile("myarr.bin",dtype=np.int32)
print arr4
输出:
[2.97079411e-313 4.24399158e-313 1.29441743e-312]
[2.80259693e-44 1.96181785e-44 2.10194770e-44 2.80259693e-44 7.00649232e-44 8.54792063e-44]
[20 14 15 20 50 61]
#使用load()和save()
numpy.load和numpy.save函数以NumPy专用的二进制类型保存数据,这两个函数会自动处理元素类型和shape等信息,使用它们读写数组就方便多了,但是numpy.save输出的文件很难和其它语言编写的程序读入
示例
#coding=utf-8
import numpy as np
arr1 = np.array([20, 14, 15, 20, 50, 61],dtype=np.int32)
np.save("marry.npy",arr1) #
print np.load("marry.npy") #输出[20 14 15 20 50 61]
如果想要保存多个数组则可以使用np.savez("filename.npz",arr1,arr2)
示例
#coding=utf-8
import numpy as np
arr1 = np.array([20, 14, 15, 20, 50, 61],dtype=np.int32)
#使用np.savez保存多个数组在同一个文件中
arr2 = np.array([0, 4, 15, 20],dtype=np.int32)
np.savez("marry1.npz",arr1,arr2)
print np.load("marry1.npz")["arr_0"] #输出[20 14 15 20 50 61]
print np.load("marry1.npz")["arr_1"] #输出[ 0 4 15 20]
#使用loadtxt()和savetxt()读写带格式的文本文件(txt和csv)
语法:np.savetxt(filename,arr,fmt,delimiter)
filename:要保存的文件名
arr:要保存的数组
fmt:数据要保存的格式,默认为'%.18e'
delimiter:元素之间的分隔符
np.loadtxt(filename,dtype,usecols,delimiter,unpack)
filename:文件名
dtype:数据格式
usecols:要读取范围 如usecols=(6,7) 读取第7个第第8个字段
delimiter:元素之间的分隔符
unpack:意思是分拆存储不同列的数据,即分别usecols设置的字段数组赋值给多个变量,
如:np.loadtxt('data.csv', delimiter=',', usecols=(6,7), unpack=True)
示例:
#coding=utf-8
import numpy as np
arr1 = np.array([20, 14, 15, 20, 50, 61],dtype=np.int32)
arr6=arr1.reshape(3,2)
np.savetxt("marry.csv",arr6,fmt='%d',delimiter=",")
arr6=np.loadtxt("marry.csv",dtype=np.int32,delimiter=",")
#使用usecols选取部分字段并使用unpack分拆得到的数组到多个变量
c,v=np.loadtxt("marry.csv", dtype=np.int32, delimiter=",", usecols=(0,1), unpack=True)
示例2:利用numpy计算csv中各列的总和
marry.csv内容如下
20,14
15,20
50,61
import numpy as np
arr1=np.loadtxt("marry.csv",dtype=np.int32,delimiter=",")
res=arr1.sum(axis=0)
print res #输出[85 95]