目录
1.npz文件
2.npy文件
3.csv文件
4.列表、元组、numpy矩阵
①列表
②元组(不可变列表)
③Numpy数组
③Numpy矩阵
1.npz文件
npz是python的压缩文件
①读取文件
#独取文件 读取当前文件夹下的data的mag_csdataset = np.load('./data/mag_cs.npz', allow_pickle=True)#通过上面这行代码得到的是一个`numpy.lib.npyio.NpzFile`文件
②NpzFile
对象有个属性files
可以通过它查看该压缩文件的所有文件名,通过dataset['文件名']
来获取文件内容
print(dataset.files)print(len(dataset.files))# 文件内容、type、shape(以adj_matrix.data为例)print(dataset['adj_matrix.data'])print(type(dataset['adj_matrix.data']))print(dataset['adj_matrix.data'].shape)
③保存为.npz文件
# 将x、y、z数组,分别保存为x, sinx, z这三个npz文件x = np.arange(1, 10)y = np.sin(x)z = 2 * x + 0.5np.savez_compressed('./data/my_dataset', x=x, sinx=y, z=z)
2.npy文件
①读取与保存
import numpy as npdata = np.zeros((3,4))np.save('data.npy', data)#保存del datadata = np.load('data.npy')#读取print('type :', type(data))print('shape :', data.shape)print('data :')print(data)
输出如下:
type : shape : (8, 4) data : [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]
②npy转csv
加载npy格式的数据文件
给每一列数据添加一个列名
以csv格式保存数据
import pandas as pdimport numpy as npimport csvdata = np.load('data.npy')columns = ['A', 'B', 'C', 'D'] # 这是个list?还是数组?#保存为csvwith open('data.csv', 'w') as f: csv_writer = csv.writer(f) csv_writer.writerow(columns) csv_writer.writerows(data) #查看保存的csvdf = pd.read_csv('data.csv')print(df)
3.csv文件
1.使用csv.writer()创建
import csv headers = ['学号','姓名','分数']rows = [('202001','张三','98'), ('202002','李四','95'), ('202003','王五','92')]with open('score.csv','w',encoding='utf8',newline='') as f : writer = csv.writer(f)# 创建 writer.writerow(headers) # 写入列名 writer.writerows(rows)# 写入数据
2.使用csv.Dictwriter()创建
import csv headers = ['学号','姓名','分数']rows = [{'学号':'202001','姓名':'张三','分数':'98'}, {'学号':'202002','姓名':'李四','分数':'95'}, {'学号':'202003','姓名':'王五','分数':'92'}]with open('score.csv','w',encoding='utf8',newline='') as f : writer = csv.DictWriter(f,headers) writer.writeheader() writer.writerows(rows)
3.使用writelines()创建:
import csv headers = ['学号,姓名,分数','\n']csv = ['202001,张三,98','\n', '202002,李四,95','\n', '202003,王五,92']with open('score.csv', 'w',encoding='utf8',newline='') as f: f.writelines(headers) # write() argument must be str, not tuple f.writelines(csv)
4.列表、元组、numpy矩阵
python没有数组
1、元组的元素可以为:元组、列表、字典、集合 (列表作为元组的元素时,列表内的值可以改动)
2、列表的元素可以为:元组、列表、字典、集合
3、字典的元素可以为:元组、列表、字典、集合
4、集合的元素可以为:元组
①列表
列表中存放的数据是可以进行修改,比如”增”、“删”、“改”、“查”
# 使用[]存储,使用 , 分隔每个值a = [1, 2, 3]a = [‘xiaoWang’,‘xiaoZhang’,‘xiaoHua’]# 列表中的元素可以是不同类型的a = [1, ‘a’]# 列表元素修改a[2] = "我喜欢她啊"#字符串转列表name = '小阿丁,小红'list1 = list(name)# 列表的嵌套info = [['张三', 'M', '45'], ['李四', 'F', '36'], ['王五', 'M', '42']]#取出李四年龄print(schoolNames[1][2])
②元组(不可变列表)
元组的元素不能修改。元组使用小括号,列表使用方括号。 元组无法进行增删改。但可以拼接。
tuple = (1, 9, 7, 5, 6, 2,)# 元组转列表list1 = list(tuple)# 列表转元组tuple2 = tuple(list1)# 元组嵌套tup3 = ('python', (1, 2, 3), 'java', 3)tup3 = ('python', [1, 2, 3], 'java', 3)
③Numpy数组
Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器。
Numpy是专门针对数组的操作和运算进行了设计,所以数组的存储效率远优于Python中的嵌套列表。
Numpy数组中的所有元素的类型都是相同的,而Python列表中的元素类型是任意的。
list可以存储一维数组,通过列表的嵌套可以实现多维数组。
list不具有array的全部属性(如维度、转置等)
import numpy as npa = np.array([[1,2,0,1],[1,6,9,55],[7,8,9,5]]) #a为数组print(a.T)#输出a的转置
③Numpy矩阵
Numpy数组(arry)和矩阵(matrix)的区别:
Numpy matrices 是2维的
Numpy arrays (ndarrays) 可以是多维的
Matrix是Array的一个小的分支。matrix 拥有array的所有特性。
numpy中matrix的主要优势是:
相对简单的乘法运算符号。如,matrix: ab,就是矩阵积。 numpy里面arrays遵从逐个元素的运算。如array:cd,相当于matlab里面的c.d运算。而矩阵相乘,则需要numpy里面的dot命令 。