这里简单总结python中对数据文件的简单读写操做。html
在numpy库中有很好的对txt文本文件进行操做的函数 [1],以下例:python
import numpy array = numpy.loadtxt('data_array.txt')
若是data_array.txt是按照矩阵存放的文本文件,那么读出来的array就是和原文件结构一致的矩阵。linux
一样可使用numpy库中的函数将矩阵变量保存为文本文件 [2]。shell
numpy.savetxt('array2D.txt', array_2D)
使用txt文本文件只能保存1或2维的矩阵,对于高于2维的矩阵可使用.npy后缀的文件进行读写和保存 [3]。编程
# save 3D/4D matrix to .npy files numpy.save('M3D.npy', M3D) numpy.save('M4D.npy', M4D) # load 3D/4D matrix from .npy file M3D_data = numpy.load('M3D.npy') M4D_data = numpy.load('M4D.npy')
xls格式的电子表格是Office系列办公软件经常使用的工做文件格式,能够在电子表格中灵活的储存丰富的有用数据。利用python能够配合office软件对其中的数据进行批量的自动操做,极大的提升数据分析的效率,节省宝贵的时间。windows
读取xls电子表格内容的一种方式是调用xlrd库 [4]。
| user | age |
| ----- | ----- |
| Tom | 20 |
| Jack | 22 |
| Lily | 18 |
| Jim | 25 |
| Lucy | 21 |
| ... | ... |数组
假设你的电子表格内容如上表,那么读取代码能够是这样:app
import xlrd # module to read .xlx files sheet_book = xlrd.open_workbook('sheetbook.xls') sheet1 = sheet_book.sheet_by_name('sheet1') n_row = 24 user_names = [] user_ages = numpy.zeros(n_row) for i in range(0, n_row): # read user names user_names.append(sheet1.cell(i+1, 0).value) user_ages[i] = sheet1.cell(i+1, 1).value
将n_row设为24就能够读取24行数据,也即24我的的姓名和年龄,并保存为python中的能够储存姓名的字符list和年龄的数组向量。函数
若是直接读取xls表格是没法直接对其进行写入操做的,由于用xlrd读取的表格对象不包含保存为xls的函数。或许是为了防止覆盖原有数据,python中彷佛没法对原表格中的数据进行替换和填充。若是要写入xls电子表格,有两种方式,一种是从零开始新建一个表格 [5],另外一种方式是复制原表格的内容,进行修改后再保存为新的版本 [6]。this
彻底新建表格的示例代码以下:
import xlwt workbook = xlwt.Workbook() sheet = workbook.add_sheet('test') for i in range(len(x_array)): sheet.write(0, i, x_array[i]) workbook.save('testput.xls')
在这个操做是原装的python可能会缺乏响应的库,须要咱们用pip进行手动安装 [6]。若是是linux/macOS的系统,打开终端键入下面命令便可,若是是windows电脑系统,应该可使用powershell来安装吧?
pip install xlutils
下面的代码即示例对原表格复制后修改保存新副本的过程。
# pip install xlutils y_array = numpy.linspace(1, 3, 100) from xlutils.copy import copy work_book = xlrd.open_workbook('testput.xls') # new_book = xlwt.add_sheet('newbook') new_book = copy(work_book) new_sheet = new_book.get_sheet('test') for i in range(len(y_array)): new_sheet.write(i, 0, y_array[i]) new_book.save('new_testput.xls')
.mat后缀的数据文件是matlab中保存复杂数据的一种格式,通常对于复杂的结构体数据多用这种格式进行储存。可是因为matlab昂贵的价格,通常商用中多使用python进行替代,国内外不少科研机构也逐渐用python对matlab进行替代,通常在经济能力有限的学生群体中比较流行用python替代matlab进行编程。有时无可奈何要用python对已有的.mat进行数据读取的操做,可是鉴于.mat格式保存数据的灵活性和复杂性,即使是下面的简单读取方法介绍仍然有可能不适用你手头的.mat数据。建议尽可能用matlab打开和读取.mat数据,若是确实要在matlab和python之间交换数据,建议保存为.txt文本文件或者.xls或.csv格式的电子表格。简单的例子以下 [7]:
import scipy.io mat_dic = scipy.io.loadmat('file.mat') # after this step, the mat_dic is a dictionary format file in pylab # to convert it to a ndarray, you need to get its value out mat_data = mat_dic['element1']
上面展现的是用python读取一个保存为.mat格式的结构体,并将其中一个元素保存为数组变量。
[1] https://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html
[2] https://docs.scipy.org/doc/numpy/reference/generated/numpy.savetxt.html
[3] https://stackoverflow.com/questions/33697615/how-do-i-save-a-3d-python-numpy-array-as-a-text-file
[4] https://stackoverflow.com/questions/2942889/reading-parsing-excel-xls-files-with-python
[5] https://www.geeksforgeeks.org/writing-excel-sheet-using-python/
[6] https://stackoverflow.com/questions/2725852/writing-to-existing-workbook-using-xlwt
[7] http://scipy-cookbook.readthedocs.io/items/Reading_mat_files.html