前言
Numpy是一个开源的Python科学计算基础库,也是目前Python用于科学计算和数据分析的最基础的第三方库,本文的主要内容是基于中国大学mooc(慕课)中的“Python数据分析与可视化”课程ndarray的使用基础进行整理和总结。
numpy简介
Numpy提供了众多功能,主要包含如下:
- Numpy提供了一个非常强大的N维数组对象ndarray(数组);
- 提供一个具有广播功能的函数,可用于数组之间的计算;
- 提供了线性代数,傅里叶变换,随机数生成等功能用于科学计算。
可以说Numpy是SciPy,Pandas等数据处理或科学计算库的基础。
虽然Python中已经具有类似功能的列表和元组供用户使用,为什么还需要Numpy呢?使用Numpy中N维数组对象ndarray代替Python中的列表/字典等进行科学计算的优势在于:
- 数组运算可以去掉元素之间所需要的循环语句,使一维向量更像单个数据;
- 通过设置专门的数组对象,经过优化,可以提升这类应用的运算速度;
- 在科学计算中,一个维度的所有数据类型往往相同,数组对象采用相同的数据类型,有助于节省运算和存储空间;
ndarray是一个多维数组对象,由两部分构成:
- 实际的数据;
- 描述这些数据的元数据(数据维度,数据类型等);
ndarray 的两个基本概念:
- 轴(axis):保存数据的维度;
- 秩(rank):轴的数量;
ndarray基本运算属性
ndarray的基本运算属性:
- .ndim:表示秩,即轴的数量或者维度的数量;
- .shape:ndarray对象的尺度,对于矩阵,n行m列;
- .size:ndarray对象元素的个数,相当于.shape中n*m的值
- .dtype:ndarray对象的元素类型;
- .itemsize:ndarray对象中每个元素的大小,以字节为单位。
ndarray实例如下:
import numpy as np
a = np.array([[1,2,3,4],
[5,6,7,8]])
a.ndim
2
a.shape
(2, 4)
a.size
8
a.dtype
dtype('int32')
a.itemsize
4
此处a.itemsize = 4表示数据a中每个元素由4个字节构成。
非同质对象
ndarray数组可以由非同质对象构成,但是非同质对象无法有效发挥Numpy的优势,应该尽量避免使用,如下例所示:
b = np.array([[1,2,3,4,5],
[6,7,8,9]])
b.shape
(2,)
b.dtype
dtype('O')
<