目录
1.npz文件
2.npy文件
3.csv文件
4.列表、元组、numpy矩阵
①列表
②元组(不可变列表)
③Numpy数组
③Numpy矩阵
1.npz文件
npz是python的压缩文件
①读取文件
#独取文件 读取当前文件夹下的data的mag_cs
dataset = 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.5
np.savez_compressed('./data/my_dataset', x=x, sinx=y, z=z)
2.npy文件
①读取与保存
import numpy as np
data = np.zeros((3,4))
np.save('data.npy', data) #保存
del data
data = np.load('data.npy') #读取
print('type :', type(data))
print('shape :', data.shape)
print('data :')
print(data)
输出如下:
type : <class ‘numpy.ndarray’> shape : (8, 4) data : [[0. 0. 0. 0.] [0. 0. 0. 0.] [0. 0. 0. 0.]]
②npy转csv
-
加载npy格式的数据文件
-
给每一列数据添加一个列名
-
以csv格式保存数据
import pandas as pd
import numpy as np
import csv
data = np.load('data.npy')
columns = ['A', 'B', 'C', 'D'] # 这是个list?还是数组?
#保存为csv
with open('data.csv', 'w') as f:
csv_writer = csv.writer(f)
csv_writer.writerow(columns)
csv_writer.writerows(data)
#查看保存的csv
df = 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 np
a = 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命令 。
文章出处登录后可见!