NumPy Memo

NumPy 是经常要使用到的数据操作工具, 各种函数/方法非常多, 功能非常强大.

flip 操作

在训练 CNN 进行图像识别的时候, 常用的一种操作是 mirror, 在 NumPy 中的方法是:

1
mat = mat[:,:,::-1]

第一个 : 是指第一个维度不变, 即在 channel * rows * cols 这种情况下, channel 这个维度不变
第二个 : 是指第二个维度不变
第三个 ::-1 是指第三个维度需要变化. 从 [a,b,c] 变成 [c,b,a]

存储 numpy 数据

Python 的 pickle 方法在存储的内容大于 4G 的时候会报错, bug造成的, 如果是图像的 numpy 数据可以直接使用 numpysavez 来保存数据.

1
2
3
4
5
np.savez("dataset", train_data=train_data, train_label=train_label, val_data=val_data, val_label=val_label)
# 数据被存储为 dataset.npz
# 读取数据
dataset = np.load("./dataset")
train_data, train_label, val_data, val_label = dataset["train_data"], dataset["train_label"], dataset["val_data"], dataset["val_label"]