前言
在读取数据集时,偶然发现numpy动态读取数据非常的慢,尝试用list后,效率提升巨大,因此记录下来。
一、对比
先上图,使用numpy.vstack()和list.append()方法分别动态加载数据集:
直接用的实验过程中的图,有兴趣的同学可以自己测试。
可以看到先用list.append()方法加载数据后再转成ndarray,效率提升100倍左右。
二、原因
numpy数组动态扩展的函数append, hstack, vstack
等都是重新在内存中分配一块空间进行赋值,而list的扩展不是使用的一块完整空间,因此效率更快。
numpy读取数据集的另一种方法是,先分配一块num_sample * num_features
的空间,然后一个个数据填充,但是显得比较笨,还是使用list动态加载更pythonic!