Python的列表(list)中,元素的本质是对象。如:L = [1, 2, 3],需要3个指针和三个整数对象,对于数值运算来说,一是比较浪费内存,二是这种结构不够高效。
Numpy提供了ndarray(N-dimensional array object)对象,即存储单一数据类型的多维数组。
NumPy 的数组中 ndarray 对象属性包括:
- ndarray.ndim:数组的维数,一维数组为 1,二维数组为 2
- ndarray.shape:数组的维度,n行m列
- ndarray.size:数组元素的总个数,等于n*m
- ndarray.dtype:数组元素的类型
- ndarray.itemsize:数组元素的大小,以字节为单位
- ndarray.real:数组元素的实部
- ndarray.imag:数组元素的虚部
- ndarray.flags:数组的内存信息
如下图所示,左边为源代码,右边为执行结果:
上图最后flags的每个属性分别表示:
- C_CONTIGUOUS:数据是在一个单一的C风格的连续段中
- F_CONTIGUOUS:数据是在一个单一的Fortran风格的连续段中
- OWNDATA:数组拥有它所使用的内存或从另一个对象中借用它
- WRITEABLE:数据区域可以被写入,将该值设置为 False,则数据为只读
- ALIGNED:数据和所有元素都适当地对齐到硬件上
- UPDATEIFCOPY:这个数组是其它数组的一个副本,当这个数组被释放时,原数组的内容将被更新