加载常用数据
传统加载csv数据
import oswith open("data.csv", "r") as f:print("\n", f.read())
np.loadtxt() 自定义地读取数据
import numpy as npdata = 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 这种方式,如果你追求存储空间和速度,就用二进制来存储。
