Numpy之文件存取的示例代码


Posted in Python onAugust 03, 2018

上一篇中我们简要带过了Numpy的数据持久化,在这一篇中将要具体说明Numpy提供的文件存取功能。Numpy可以将数组保存至二进制文件、文本文件,同时支持将多个数组保存至一个文件中。

1. np.tofile() & np.fromfile()

import numpy as np
import os

os.chdir("d:\\")
a = np.arange(0,12)
a.reshape(3,4)
array([[ 0, 1, 2, 3],
    [ 4, 5, 6, 7],
    [ 8, 9, 10, 11]])

a.tofile("a.bin")                  #保存至a.bin

b = np.fromfile("a.bin", dtype=np.int32) #从文件中加载数组,错误的dtype会导致错误的结果
array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])

b.reshape(3,4)
array([[ 0, 1, 2, 3],
    [ 4, 5, 6, 7],
    [ 8, 9, 10, 11]])
#读取的数据将为一维数组,需要使用reshape改变其数组结构

2. np.save() & np.load() & np.savez()

load()和save()用Numpy专用的二进制格式保存数据,它们会自动处理元素类型和形状等信息。savez()提供了将多个数组存储至一个文件的能力,调用load()方法返回的对象,可以使用数组名对各个数组进行读取。默认数组名arr_0,arr_1,arr_2......

np.save("a.npy", a.reshape(3,4))
c = np.load("a.npy")
c
array([[ 0, 1, 2, 3],
    [ 4, 5, 6, 7],
    [ 8, 9, 10, 11]])

多个数组存储至一个文件:

a = np.array([[1,2,3],[4,5,6]])
b = np.arange(0,1.0,0.1)
c = np.sin(b)
np.savez("result.npz", a, b, sin_arr=c) #使用sin_arr命名数组c
r = np.load("result.npz") #加载一次即可
r["arr_0"]
array([[1, 2, 3],
    [4, 5, 6]])
r["arr_1"]
array([ 0. , 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9])
r["sin_arr"]
array([ 0.    , 0.09983342, 0.19866933, 0.29552021, 0.38941834,
    0.47942554, 0.56464247, 0.64421769, 0.71735609, 0.78332691])

可以使用解压软件解压缩.npz文件会得到存储的各个数组对应的.npy文件以便进行遍历。

3. savetxt() & loadtxt()

a = np.arange(0,12,0.5).reshape(4,-1)
a
array([[ 0. ,  0.5,  1. ,  1.5,  2. ,  2.5],
    [ 3. ,  3.5,  4. ,  4.5,  5. ,  5.5],
    [ 6. ,  6.5,  7. ,  7.5,  8. ,  8.5],
    [ 9. ,  9.5, 10. , 10.5, 11. , 11.5]])
np.savetxt("a.txt", a)
np.loadtxt("a.txt")
array([[ 0. ,  0.5,  1. ,  1.5,  2. ,  2.5],
    [ 3. ,  3.5,  4. ,  4.5,  5. ,  5.5],
    [ 6. ,  6.5,  7. ,  7.5,  8. ,  8.5],
    [ 9. ,  9.5, 10. , 10.5, 11. , 11.5]])
np.savetxt("a.txt", a, fmt="%d", delimiter=",") #指定存储数据类型为整型,分隔符为,
np.loadtxt("a.txt", delimiter=',') #以,分隔符读取
array([[ 0.,  0.,  1.,  1.,  2.,  2.],
    [ 3.,  3.,  4.,  4.,  5.,  5.],
    [ 6.,  6.,  7.,  7.,  8.,  8.],
    [ 9.,  9., 10., 10., 11., 11.]])

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用Python的Django框架编写从Google Adsense中获得报表的应用
Apr 17 Python
Python中用于返回绝对值的abs()方法
May 14 Python
python实现马耳可夫链算法实例分析
May 20 Python
python 获取网页编码方式实现代码
Mar 11 Python
Python cookbook(数据结构与算法)从任意长度的可迭代对象中分解元素操作示例
Feb 13 Python
python MNIST手写识别数据调用API的方法
Aug 08 Python
Python实现的排列组合、破解密码算法示例
Apr 12 Python
Python 多线程其他属性以及继承Thread类详解
Aug 28 Python
解决Python3下map函数的显示问题
Dec 04 Python
python脚本后台执行方式
Dec 21 Python
Python 实现打印单词的菱形字符图案
Apr 12 Python
Python如何实现机器人聊天
Sep 10 Python
Python数据分析matplotlib设置多个子图的间距方法
Aug 03 #Python
详解python实现识别手写MNIST数字集的程序
Aug 03 #Python
opencv python 基于KNN的手写体识别的实例
Aug 03 #Python
Flask实现图片的上传、下载及展示示例代码
Aug 03 #Python
python使用opencv驱动摄像头的方法
Aug 03 #Python
python 简单照相机调用系统摄像头实现方法 pygame
Aug 03 #Python
Python判断字符串是否为字母或者数字(浮点数)的多种方法
Aug 03 #Python
You might like
Windows下的PHP5.0安装配制详解
2006/09/05 PHP
怎样在UNIX系统下安装MySQL
2006/10/09 PHP
wiki-shan写的php在线加密的解密程序
2008/09/07 PHP
PHP下10件你也许并不了解的事情
2008/09/11 PHP
php 仿Comsenz安装效果代码打包提供下载
2010/05/09 PHP
PHP 缓存实现代码及详细注释
2010/05/16 PHP
使用PHP获取当前url路径的函数以及服务器变量
2013/06/29 PHP
php读取csv实现csv文件下载功能
2013/12/18 PHP
php中in_array函数用法探究
2014/11/25 PHP
PHP实现的折半查找算法示例
2017/12/19 PHP
PHP常见数组排序方法小结
2018/08/20 PHP
js 验证密码强弱的小例子
2013/03/21 Javascript
JS日期格式化之javascript Date format
2015/10/01 Javascript
JS两个数组比较,删除重复值的巧妙方法(推荐)
2016/06/03 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
微信小程序开发之路由切换页面重定向问题
2018/09/18 Javascript
微信小程序中显示倒计时代码实例
2019/05/09 Javascript
基于js实现抽红包并分配代码实例
2019/09/19 Javascript
JavaScript代理模式原理与用法实例详解
2020/03/10 Javascript
[36:20]完美世界DOTA2联赛PWL S3 access vs Rebirth 第一场 12.17
2020/12/18 DOTA
python做量化投资系列之比特币初始配置
2018/01/23 Python
pytorch:实现简单的GAN示例(MNIST数据集)
2020/01/10 Python
Django models filter筛选条件详解
2020/03/16 Python
Python爬虫工具requests-html使用解析
2020/04/29 Python
python为什么要安装到c盘
2020/07/20 Python
python中doctest库实例用法
2020/12/31 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
详解Html5原生拖拽操作
2018/01/12 HTML / CSS
英国最大的正宗复古足球衫制造商和零售商:TOFFS
2018/06/21 全球购物
英语专业学生个人求职信
2014/01/28 职场文书
老员工辞职信范文
2015/05/12 职场文书
欠款起诉书范文
2015/05/19 职场文书
市级三好生竞选稿
2015/11/21 职场文书
Vue全家桶入门基础教程
2021/05/14 Vue.js