NumPy入门教程
1NumPy
1 NumPy简介
NumPy(Numerical Python)是Python数据分析必不可少的第三方库,主要用于多维数组(矩阵)处理的库。用来存储和处理大型矩阵,比Python自身的嵌套列表结构要高效的多。
NumPy重要功能如下:
- 高性能科学计算和数据分析的基础包
- ndarray,多维数组,具有矢量运算能力,快速、节省空间
- 矩阵运算,无需循环,可完成类似Matlab中的矢量运算
- 用于读写磁盘数据的工具以及用于操作内存映射文件的工具
官网地址NumPy
2 NumPy属性
NumPy的主要对象是同类型元素的多维数组,所有的元素都是一种类型。在NumPy中维度(dimensions)叫做轴(axes),轴的个数叫做秩(rank)。
例如,在3D空间一个点的坐标[1, 2, 3]是一个秩为1的数组,因为它只有一个轴。那个轴长度为3。又例如,在以下例子中,数组的秩为2(它有两个维度),第一个维度长度为3,第二个维度长度为3。
[[1., 0., 0.],
[0., 1., 2.]]
NumPy的数组类被称作ndarray,通常被称作数组。注意NumPy.array和标准Python库类array.array并不相同,后者只处理一维数组和提供少量功能,而前者可以进行高维数组的创建和提供较多且复杂的运算功能。更多重要ndarray对象属性有:
- ndarray.ndim
数组轴的个数
- ndarray.shape
数组的维度。这是一个指示数组在每个维度上大小的整数元组。例如一个n排m列的矩阵,它的shape属性将是(2,3),这个元组的长度显然是秩,即维度或者ndim属性。
- ndarray.size
数组元素的总个数,等于shape属性中元组元素的乘积。
- ndarray.dtype
一个用来描述数组中元素类型的对象,可以通过创造或指定dtype使用标准Python类型。另外NumPy提供它自己的数据类型。
- ndarray.itemsize
数组中每个元素的字节大小。例如,一个元素类型为float64的数组itemsize属性值为8(=64/8),又如,一个元素类型为complex32的数组itemsize属性为4(=32/8).
- ndarray.data
包含实际数组元素的缓冲区,通常我们不需要使用这个属性,因为我们总是通过索引来使用数组中的元素。
代码示例:
1 | import numpy as np |
3 创建ndarray
ndarray 多维数组(N Dimension Array)
NumPy数组是一个多维的数组对象(矩阵),称为ndarray,具有矢量算术运算能力和复杂的广播能力,并具有执行速度快和节省空间的特点。注意:ndarray的下标从0开始,且数组里的所有元素必须是相同类型。
1 array()
1 | import numpy as np |
2 zeros() /ones()/empty()
函数function创建一个全是0的数组,函数ones创建一个全1的数组,函数empty创建一个内容随机并且依赖于内存状态的数组。默认创建的数组类型(dtype)都是float64
1 | zeros1=np.zeros( (3,4) ) |
3 arange()
arange() 类似 python 的 range() ,创建一个一维 ndarray 数组。
1 | np_arange = np.arange(10, 20, 5,dtype=int) |
4 matrix()
matrix 是 ndarray 的子类,只能生成 2 维的矩阵
1 | x1=np.mat("1 2;3 4") |
5 创建随机数矩阵
1 | import numpy as np |
6 ndarray的数据类型
- dtype参数,指定数组的数据类型,类型名+位数,如float64, int32
- astype方法,转换数组的数据类型
1 | # 初始化3行4列数组,数据类型为float64 |
7 等比/等差数列
np.logspace等比数列
logspace中,开始点和结束点是10的幂
我们让开始点为0,结束点为0,元素个数为10,看看输出结果。
1 | a = np.logspace(0,0,10) |
● 我们看下面的例子,0代表10的0次方,9代表10的9次方。
1 | a = np.logspace(0,9,10) |
● 假如,我们想要改变基数,不让它以10为底数,我们可以改变base参数,将其设置为2试试。
1 | a = np.logspace(0,9,10,base=2) |
np.linspace等差数列
np.linspace是用于创建一个一维数组,并且是等差数列构成的一维数组,它最常用的有三个参数。
● 第一个例子,用到三个参数,第一个参数表示起始点,第二个参数表示终止点,第三个参数表示数列的个数。
1 | a = np.linspace(1,10,10) |
● linspace创建的数组元素是浮点型。
1 | a.dtype |
● 可以使用参数endpoint来决定是否包含终止值,默认值为True。
1 | a = np.linspace(1,10,10,endpoint=False) |
4 NumPy内置函数
1 基本函数
- np.ceil(): 向上最接近的整数,参数是 number 或 array
- np.floor(): 向下最接近的整数,参数是 number 或 array
- np.rint(): 四舍五入,参数是 number 或 array
- np.isnan(): 判断元素是否为 NaN(Not a Number),参数是 number 或 array
- np.multiply(): 元素相乘,参数是 number 或 array
- np.divide(): 元素相除,参数是 number 或 array
- np.abs():元素的绝对值,参数是 number 或 array
- np.where(condition, x, y): 三元运算符,x if condition else y
1 | # randn() 返回具有标准正态分布的序列。 |
2 统计函数
- np.mean(), np.sum():所有元素的平均值,所有元素的和,参数是 number 或 array
- np.max(), np.min():所有元素的最大值,所有元素的最小值,参数是 number 或 array
- np.std(), np.var():所有元素的标准差,所有元素的方差,参数是 number 或 array
- np.argmax(), np.argmin():最大值的下标索引值,最小值的下标索引值,参数是 number 或 array
- np.cumsum(), np.cumprod():返回一个一维数组,每个元素都是之前所有元素的 累加和 和 累乘积,参数是 number 或 array
多维数组默认统计全部维度,axis参数可以按指定轴心统计,值为0则按列统计,值为1则按行统计。
1 | arr = np.arange(12).reshape(3,4) |
3 比较函数
假如我们想要知道矩阵a和矩阵b中所有对应元素是否相等,我们需要使用all方法,假如我们想要知道矩阵a和矩阵b中对应元素是否有一个相等,我们需要使用any方法。
- np.any(): 至少有一个元素满足指定条件,返回True
- np.all(): 所有的元素满足指定条件,返回True
1 | arr = np.random.randn(2,3) |
4 去重函数
np.unique():找到唯一值并返回排序结果,类似于Python的set集合
1 | arr = np.array([[1, 2, 1], [2, 3, 4]]) |
5 排序函数
对数组元素进行排序
1 | arr = np.array([1, 2, 34, 5]) |
5 NumPy运算
1 基本运算
数组的算数运算是按照元素的。新的数组被创建并且被结果填充。
1 | import numpy as np |
2 矩阵乘法
1 | import numpy as np |
NumPy入门教程