加载常用数据
传统加载csv数据
import os
with open("data.csv", "r") as f:
print("\n", f.read())
np.loadtxt() 自定义地读取数据
import numpy as np
data = np.loadtxt("data.csv", delimiter=",", skiprows=1, dtype=np.int)
print(data)
比如在 loadtxt 的参数中,我们传入 , 让 numpy 在做数据分隔的时候,以逗号作为分隔符。同时 skiprow skip 掉第一行描述文字 (其实不设置这个的话,它好像也会自动帮你 skip),还有读取出来的数据要放到 dtype=np.int 类型的 array 中。该方法适用与 csv 和 txt 格式的文本格式数据。
直接从字符中加载数据
row_string = "20131, 10, 67, 20132, 11, 88, 20133, 12, 98, 20134, 8, 100, 20135, 9, 75, 20136, 12, 78"
data = np.fromstring(row_string, dtype=np.int, sep=",") # 读取一个数值序列
data = data.reshape(6, 3) #再用 Numpy 的reshape 成你想要的样子
print(data)
[[20131 10 67]
[20132 11 88]
[20133 12 98]
[20134 8 100]
[20135 9 75]
[20136 12 78]]
保存数据
Numpy保存数据,保存通用文本格式数据,比如 csv 或 txt。
np.savetxt("data/save_data.csv", data, delimiter=",", fmt='%s')
二进制格式保存数据
np.save("data/save_data.npy", data) # 保存
npy_data = np.load("data/save_data.npy") # 加载
用1个 array 来存放不同类型的数据
们能用 np.savez() 保存一个 .npz 文件将这两个 array 同时存储好
train_data = np.array([1,2,3])
test_data = np.array([11,22,33])
np.savez("data/save_data.npz", train=train_data, test=test_data) # 保存
npz_data = np.load("data/save_data.npz") #加载
print("train:", npz_data["train"])
print("test:", npz_data["test"])
train: [1 2 3]
test: [11 22 33]
np.savez_compressed() 数据压缩
np.savez_compressed("data/save_data_compressed.npz", train=train_data, test=test_data)
npz_data_compressed = np.load("data/save_data_compressed.npz")
print("train:", npz_data_compressed["train"])
print("test:", npz_data_compressed["test"])
train: [1 2 3]
test: [11 22 33]
以上numpy 读取与保存方法,可见 numpy 还是很用心在做数据这件事的。如果你喜欢纯文本,就用 txt 或者 csv 这种方式,如果你追求存储空间和速度,就用二进制来存储。