python 科学计算学习一:numpy文件存取,内存映射
2014-02-28 15:27
525 查看
1,文件的存取可以是二进制类型,也可以是文本文件。numpy的二进制文件又可以是有格式的和没有格式的类型。tofile()可以很简单的将数组以二进制的形式写进到文件里面,同时fromfile()也可以方便的读回数据。
>>> a
array([[1, 6, 6, 7],
[0, 1, 2, 3],
[1, 2, 7, 8]])
>>> a.tofile('a.bin')
>>> b=np.fromfile('a.bin',dtype=np.int32)
>>> b
array([1, 6, 6, 7, 0, 1, 2, 3, 1, 2, 7, 8])
>>> b.shape=3,4
>>> b
array([[1, 6, 6, 7],
[0, 1, 2, 3],
[1, 2, 7, 8]])
发现要保持原来的形式还是比较麻烦的。其实还有更加简单的命令:save(),load()简单直观。(注意扩展名)
>>> np.save('a.npy',a)
>>> c=np.load('a.npy')
>>> c
array([[1, 6, 6, 7],
[0, 1, 2, 3],
[1, 2, 7, 8]])
也可以使用savez()命令同时存储多个数组。
>>> np.savez('a.npz',a,b)
>>> d=np.load('a.npz')
>>> d['arr_0']
array([[1, 6, 6, 7],
[0, 1, 2, 3],
[1, 2, 7, 8]])
>>> d['arr_1']
array([[1, 6, 6, 7],
[0, 1, 2, 3],
[1, 2, 7, 8]])
若是存储为文本文件,使用:savextxt(),loadtxt(),可以处理一维,二维数组文件。也可以用这两个命令读写CSV格式的文本文件。
>>> a
array([[1, 6, 6, 7],
[0, 1, 2, 3],
[1, 2, 7, 8]])
>>> np.savetxt('a.txt',a)
>>> np.loadtxt('a.txt')
array([[ 1., 6., 6., 7.],
[ 0., 1., 2., 3.],
[ 1., 2., 7., 8.]])
其实在python中可以open()命令来读出txt文件,然后使用readlines()命令读取整个文件。
2,内存映射,当需要存取一个很大的文件里面的小部分的数据的时候,读入整个文件显然是非常的浪费资源的。于是要使用到内存映射的方法。
memmap(filename,dtype=uint8,mode=“r+”,offset=0,shape,order=‘C’)其中,offset是文件中存储数据的起始位置;mode可以是c(不写入的修改)r+(可读写)w+(创建或是覆盖已有文件)。
>>> a
memmap([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]], dtype=uint8)
>>> file('tem.dat').read()
'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>> a[:]=ord('a') # 加入的是a的ASCII码
>>> a.flush()
>>> file('tem.dat').read()
'aaaaaaaaaa'
到此,numpy中个人觉得比较重要的知识点就学习完了。接下来将会学习的是matplotlib绘图,后面还要学习一种python的UI,接下来是python
opencv。敬请期待!
参考书目:
《python科学计算》
《机器学习实战》
>>> a
array([[1, 6, 6, 7],
[0, 1, 2, 3],
[1, 2, 7, 8]])
>>> a.tofile('a.bin')
>>> b=np.fromfile('a.bin',dtype=np.int32)
>>> b
array([1, 6, 6, 7, 0, 1, 2, 3, 1, 2, 7, 8])
>>> b.shape=3,4
>>> b
array([[1, 6, 6, 7],
[0, 1, 2, 3],
[1, 2, 7, 8]])
发现要保持原来的形式还是比较麻烦的。其实还有更加简单的命令:save(),load()简单直观。(注意扩展名)
>>> np.save('a.npy',a)
>>> c=np.load('a.npy')
>>> c
array([[1, 6, 6, 7],
[0, 1, 2, 3],
[1, 2, 7, 8]])
也可以使用savez()命令同时存储多个数组。
>>> np.savez('a.npz',a,b)
>>> d=np.load('a.npz')
>>> d['arr_0']
array([[1, 6, 6, 7],
[0, 1, 2, 3],
[1, 2, 7, 8]])
>>> d['arr_1']
array([[1, 6, 6, 7],
[0, 1, 2, 3],
[1, 2, 7, 8]])
若是存储为文本文件,使用:savextxt(),loadtxt(),可以处理一维,二维数组文件。也可以用这两个命令读写CSV格式的文本文件。
>>> a
array([[1, 6, 6, 7],
[0, 1, 2, 3],
[1, 2, 7, 8]])
>>> np.savetxt('a.txt',a)
>>> np.loadtxt('a.txt')
array([[ 1., 6., 6., 7.],
[ 0., 1., 2., 3.],
[ 1., 2., 7., 8.]])
其实在python中可以open()命令来读出txt文件,然后使用readlines()命令读取整个文件。
2,内存映射,当需要存取一个很大的文件里面的小部分的数据的时候,读入整个文件显然是非常的浪费资源的。于是要使用到内存映射的方法。
memmap(filename,dtype=uint8,mode=“r+”,offset=0,shape,order=‘C’)其中,offset是文件中存储数据的起始位置;mode可以是c(不写入的修改)r+(可读写)w+(创建或是覆盖已有文件)。
>>> a
memmap([[0, 0, 0, 0, 0],
[0, 0, 0, 0, 0]], dtype=uint8)
>>> file('tem.dat').read()
'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
>>> a[:]=ord('a') # 加入的是a的ASCII码
>>> a.flush()
>>> file('tem.dat').read()
'aaaaaaaaaa'
到此,numpy中个人觉得比较重要的知识点就学习完了。接下来将会学习的是matplotlib绘图,后面还要学习一种python的UI,接下来是python
opencv。敬请期待!
参考书目:
《python科学计算》
《机器学习实战》
相关文章推荐
- python 科学计算学习一:numpy文件存取,内存映射
- python 科学计算 — numpy 学习笔记
- 深度学习之Python的科学计算包 – Numpy
- python 学习之 用python做科学计算Numpy
- Python科学计算学习一 NumPy 快速处理数据
- Python科学计算-----NumPy(一)
- python科学计算_numpy_常规函数与排序 标签: numpypython排序
- Numpy入门:如何在Python中用于科学计算?
- 关于python科学计算库numpy学习总结
- java_croe 学习笔记之新IO---java.nio 之内存映射文件
- python-框架-网页爬虫-文本处理-科学计算-可视化-机器学习-数据挖掘-深度学习
- python文件读写(open参数,文件缓冲,内存映射,临时文件)
- python科学计算学习二:matplotlib绘图,图标注释(2)
- python-18-如何将文件映射到内存?
- python科学计算_numpy_广播与下标
- python:numpy 文件存取
- python科学计算学习二:matplotlib绘图(极坐标 3D绘图等)(3)
- python科学计算_numpy_简单的多项式应用
- python中用于科学计算的神奇的numpy
- Python学习_科学计算