学习深度学习的过程中,经常用到Numpy库,有必要了解一下Numpy库
Numpy最基本的数据对象是ndarray
ndarray:N维数组对象
ndarray是一个多维数组对象,由两部分组成:
1. 实际的数据
2. 描述这些数据的元数据(数据维度、数据类型)(告诉计算机这些数据的组织方式)
每个维度中数据类型要相同,这两部分构成计算机能够理解的n维数据
python中已经有了列表类型,可以表示一维或多维数据,为什么需要额外的n维数组类型呢?
首先举一个例子:
不使用Numpy的话需要使用循环对数据进行处理,一个一个元素进行计算。
使用numpy进行计算时,没有使用循环,将两个一维数组整体当作一个数据,直接进行运算,编程时进行处理较为简单。
而且numpy的底层实现是由c语言完成的,使得大规模运算时较快。
问题:为什么需要Numpy?
结论:
- 数组对象可以去掉元素间运算所需的循环,使一维向量更像单个数据。
- 设置专门的数组对象,经过优化,可以提升这类应用的运算速度。(使用C或更底层的方法)
- 而且python中的列表中每个维度的数据类型可以不同,但是在科学计算中,一个维度所有数据的类型往往相同。ndarray数组对象采用相同的数据类型,有助于节省运算和存储空间。(对程序来说,当数据类型确定时,系统可以预判要使用多少存储空间,这样在内存分配时空间的利用率很高)