栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Numpy学习笔记008

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Numpy学习笔记008

Numpy学习笔记008 十、Numpy文件操作 1. np.savetxt

用于文件保存,需要注意的是最多只能保存二维数组,否则会报错。

np.savetxt(fname, X, fmt='%.18e', delimiter=' ', newline='n', header='', footer='', comments='# ', encoding=None)

参数如下:
frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件
X : 存入文件的数组(一维或二维数组)
fmt : 写入文件的格式,例如:%d %.2f %.18e
    
delimiter : str 分隔列的字符串或字符。
newline : str   分隔行的字符串或字符。
    
header : str  将要写入文件头的字符串
footer : str 将要写入文件尾的字符串
    
comments : str 将在header和footer字符串前面加前缀的字符串,将它们标记为注释。默认值:“#”
       
encoding : {None, str} 用于对输出文件进行编码的编码。不适用于输出流。如果编码不是“Byte”或“latin1”则
无法在NumPy版本<1.14中加载文件。默认值为latin1

示例:

a = np.arange(30).reshape(10,3)
np.savetxt("a.csv",a,fmt="%d",delimiter=",",header='语文,数学,英语',comments='') 

在本地项目文件生成a.csv文件

a1 = np.arange(15).reshape(5,3)
np.savetxt("a1.csv",a1,fmt="%d",delimiter=",", newline='n', header="语文,数学,英语", footer="我,在,这",comments='',encoding=None)

在本地项目文件生成a1.csv文件,打开如下:

2. np.loadtxt

用于读取文件,

np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)   #也只能处理不超过二维的数组

参数:
frame:文件、字符串或产生器,可以是.gz或.bz2的压缩文件。
dtype:数据类型,可选。
delimiter:分割字符串,默认是任何空格。
skiprows:跳过前面x行。
usecols:读取指定的列,用元组组合。
unpack:如果True,读取出来的数组是转置后的。
b = np.loadtxt('a.csv',dtype=np.int32,delimiter=',',skiprows=1)  #第一行是中文,跳过才可以读出整型数字,否则会报错
b
array([[ 0,  1,  2],
       [ 3,  4,  5],
       [ 6,  7,  8],
       [ 9, 10, 11],
       [12, 13, 14],
       [15, 16, 17],
       [18, 19, 20],
       [21, 22, 23],
       [24, 25, 26],
       [27, 28, 29]])
3.np.save、np.savez、np.load

numpy中还有一种独有的存储解决方案。文件名是以.npy或者.npz结尾的。以下是存储和加载的函数。
存储:np.save("fname",array)或np.savez("fname",array)。其中,前者函数的扩展名是.npy,后者的扩展名是.npz,后者是经过压缩的。
加载:np.load("fname")。

np.save

b = np.random.randint(1,10,size=(3,4))
np.save("c",b)    #在文件存储的文件夹下会生成一个c.npy的文件。
np.load("c.npy")   #读取c.npy文件
array([[9, 7, 3, 6],
       [1, 8, 6, 1],
       [3, 4, 9, 2]])

np.save()和np.savetxt()区别

c = np.random.randint(1,10,size=(2,3,4))
#np.savetxt('t.csv',c)    #savetxt()方法超过二维数组就会报错,此处报错
np.save('d',c)     #save()可以保存多维数组
d = np.random.randint(1,10,size=(3,4))
np.savez("r",d)  

np.savez()

d = np.random.randint(1,10,size=(3,4))
np.savez("r",d)    #在文件存储的文件夹下会生成一个r.npyz的文件。经过压缩的文件
np.load('r.npz')

4.操作CSV文件 4.1 读取csv文件
#读取csv文件
import csv

with open('58房源.csv','r') as fp:
    #reader 是一个迭代器
    reader = csv.reader(fp)
    #titles = next(reader)   #从第二行开始读取
    for x in reader:
        print(x)  #打印全部
        #筛选数据
        square = x[2]
        money = x[-2]
        print({'面积':square,'总售价':money})

读取58房源.csv文件部分内容如下:

['标题', '布局', '面积', '朝向', '楼层', '建筑年份', '地址', '总售价', '平均售价']
{'面积': '面积', '总售价': '总售价'}
['别墅区 署前路 安静社区 环境   一梯一户 独立园', '3室2厅1卫', 'n                            138㎡n                        ', '南', 'n                            共3层n                        ', 'n                            1999年建造n                        ', '达道路松岗东越秀东山口达道路17号', '1180万', '85508元/㎡']
{'面积': 'n                            138㎡n                        ', '总售价': '1180万'}
['时代廊桥 南向三房  精装修  视野好,安静望园 有钥匙', '3室2厅1卫', 'n                            84.1㎡n                        ', '南', 'n                            低层(共26层)n                        ', 'n                            2015年建造n                        ', '时代廊桥广州周边佛山灯湖西路7号', '270万', '32094元/㎡']
{'面积': 'n                            84.1㎡n                        ', '总售价': '270万'}
['价格可谈,低于市场价40万 可以看房现楼带装修,欢迎随时咨询', '3室2厅2卫', 'n                            101.7㎡n   
......................................
4.2 读取csv文件(迭代器)
import csv

with open('58房源.csv','r') as fp:
    #使用DictReader创建reader对象,不会包含首行,返回的是一个字典
    #reader是一个迭代器
    reader = csv.DictReader(fp) 
    
    for x in reader:
        print(x)  #获取全部信息
        print(x['平均售价'])   #通过字典的键获取值 

读取58房源.csv文件部分内容如下:

{'标题': '别墅区 署前路 安静社区 环境   一梯一户 独立园', '布局': '3室2厅1卫', '面积': 'n                            138㎡n                        ', '朝向': '南', '楼层': 'n                            共3层n                        ', '建筑年份': 'n                            1999年建造n                        ', '地址': '达道路松岗东越秀东山口达道路17号', '总售价': '1180万', '平均售价': '85508元/㎡'}
85508元/㎡
{'标题': '时代廊桥 南向三房  精装修  视野好,安静望园 有钥匙', '布局': '3室2厅1卫', '面积': 'n                            84.1㎡n                        ', '朝向': '南', '楼层': 'n                            低层(共26层)n                        ', '建筑年份': 'n                            2015年建造n                        ', '地址': '时代廊桥广州周边佛山灯湖西路7号', '总售价': '270万', '平均售价': '32094元/㎡'}
32094元/㎡
{'标题': '价格可谈,低于市场价40万 可以看房现楼带装修,欢迎随时咨询', '布局': '3室2厅2卫', '面积': 'n                            101.7㎡n                        ', '朝向': '东南', '楼层': 'n                            高层(共24层)n                        ', '建筑年份': 'n                            2015年建造n                        ', '地址': '港骏轩增城凤凰城广深大道西292之一', '总售价': '195万', '平均售价': '19175元/㎡'}
..........................
4.3 向csv文件写入信息
import csv

headers = ['name','age','classroom']
values = [
    ('zhiliao',18,'111'),
    ('wena',20,'222'),
    ('bbc',21,'111')
]
with open('test.csv','w',encoding='utf-8',newline='') as fp:   #默认为换行符:newline='n'
    writer = csv.writer(fp)
    writer.writerow(headers)
    writer.writerows(values)

test.csv文件写入如下:

4.4 DictWriter

使用字典的方式把数据写入csv文件,这时候就需要使用DictWriter

import csv

headers = ['name','age','classroom']
values = [
    {"name":'wenn',"age":20,"classroom":'222'},
    {"name":'abc',"age":30,"classroom":'333'}
]
with open('test1.csv','w',newline='') as fp:
    writer = csv.DictWriter(fp,headers)
    #写入表头信息,需要调用writeheader()方法
    writer.writeheader()
    writer.writerow({'name':'zhiliao',"age":18,"classroom":'111'})
    writer.writerows(values)

test1.csv写入如下:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/339738.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号