npz文件转为npy_excel或者csv文件格式转化成npy或npz格式,npy与npz的关系(numpy的I/O操作)...

本文详细介绍了如何使用numpy和pandas将Excel或CSV文件转换为npy和npz格式。npy格式仅保存一个数组,而npz格式可存储多个数组并进行压缩。通过np.save()和np.savez()函数,可以方便地进行文件格式转换。当需要保留列名时,可以将列名和值分别存储,然后用np.savez()合并到一个npz文件中,便于后续读取和使用。
摘要由CSDN通过智能技术生成

excel或者csv文件格式转化成npy或npz格式

步骤很简单,首先需要导入numpy和pandas库

import numpy as np

import pandas as pd

然后用pandas将需要转化的excel文件读进来,如果是csv文件就用pd.read_csv(“文件地址\文件名”),下列代码以读取excel文件为例

data = pd.read_excel(r"D:\data\student-score.xls")

前边的小写字母r是用来转义斜杠()的,不用这种方式,将斜杠()全部替换成反斜杠(/)也可以,或者用双斜杠,就是在每个需要转义的斜杠前再加一个斜杠,这样子(\)也是可以的,具体的知识点可以参考转义字符部分.

转换成npy格式

进行文件格式的转换:

np.save(r"D:\data\student-score", data)

运行完这行代码后,一个和原excel文件同名的npy文件就生成在指定文件夹了

转换成npz格式

前边导入numpy和pandas库以及用pandas读取文件的操作都是一样的,进行文件格式转换有一点区别:

np.savez(r"D:\data\student-score", data)

运行完这行代码,一个和原excel文件同名的npz文件就生成在指定文件夹了

以上npy和npz文件都可以用np.load(r"D:\data\student-score.npy")读取

但是npy格式的读出来是array

npz格式读出来是这个东东

这就涉及下边的话题了

npy与npz的关系

从上边代码可以看出,np.save()生成的是npy文件,np.savez()生成的是npz文件,那么这两个只差了一个字母的命令区别到底在哪里呢,生成的文件又有什么不同呢?

先来说np.save(),这个函数的参数要求是要传入的文件或者文件名,再加一个array_like,注意是只加一个!是不是有点明白了?np.save()只能存储一个np.array数组并生成npy文件!

上文中用np.load()读取的文件,虽然读出来的是array,但是缺少列名,只有列名下的值,不知道列名的数据要怎样处理呢?

这就引出了另一个函数np.savez(),这个函数的参数除了要求传入文件或者文件名,后边的参数是不定长的位置参数(*args)和不定长的关键字参数(**kwds),也就是说,可以传入不限数量的array_like,然后把这些array_like打包压缩到一个npz文件中!

既然如此,对于怎样用numpy读取excel文件是不是有了新的思路?把列名(columns)和值(values)分别放在两个excel中,然后用np.savez()函数把他们打包压缩转化成一个npz格式文件,就可以通过这一个npz文件可以同时访问columns和values了。

data1 = pd.read_excel(r"D:\data\student-score-col.xlsx")

data2 = pd.read_excel(r"D:\data\student-score-val.xlsx")

#把两个excel文件打包压缩转换成一个npz文件

np.savez("D:/data/student-score1.npz",data1 , data2 )

#读取打包压缩后实际包含两个npy文件的npz文件

data_z = np.load(r"D:\data\student-score1.npz")

data_z

返回结果:

columns = data_z['arr_0']

#这里写arr_0,是因为打包压缩转换的第一个文件的默认名字是arr_0

values = data_z['arr_1'] #第二个文件默认名字是arr_1

这两行代码输出的就是转化成ndarray的列名和值.

另外这里面还有一个小坑,列名和值分别放入两个excel时需要给他们添加一个相同的标题行,否则只放入标题行的文件用npz文件无法读取到信息,只能读到空列表.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值