学习笔记
目录
从头创建数组
NumPy基础
NumPy用于计算的通用函数
NumPy的聚合(最大/小值等)函数
数组的计算之广播
数组的布尔掩码
花哨的索引
数组的排序
NumPy库
从头创建数组:
NumPy有许多内置的函数可以用来创建数组
import numpy as np
np.zeros(5, dtype=int) #建一长度为5,数值均为0的数组
np.ones((3, 5), dtype=float) #建一3x5的数值均为1的浮点型数组
np.full((3, 5), 4.44) #建一3x5的数值均为4.44的浮点型数组
np.arange(0, 20, 2) #数组从0~20,步长为2,最后的20不包含
np.linspace(1, 3, 5) #数组有5个元素,从1~3均匀分配
np.random.random((3,3)) #数组为3x3型,元素为0~1均匀分布的随机数
np.random.normal(0, 1, (3, 3)) #创建3x3的、均值为0、标准差为1的正态分布的随机数组
np.random.randint(0, 10, (3,3)) #创建3x3的、【0, 10)区间的随机整型数组
np.eye(5) #创建一个5x5的单位矩阵(元素为1或0)
NumPy基础:
- NumPy的属性:数组的维度ndim;数组每个维度的大小shape;数组的总大小size;数组的数据类型dtype
- 索引获取单个元素:与python列表用法类似
- 通过切片获取字数组:
array[start:stop:step]
默认start=0、stop=维度大小、step=1;多位数组如二位数组也类似,不同维度用逗号隔开,如array2[1:2:2, 2:2:1]
;也可通过索引获取行或列。 - 数组拼接方法:np.concatenate;np.xstack;np.hstack,用法如
np.concatenate([array1, array2, array3])
。 - 数组分裂方法:np.split;np.hsplit;np.vsplit,用法如
np.split(array, [3,5])
其中3和5为分裂点位置,分成三个数组。
NumPy用于计算的通用函数:
np.add #加法运算
np.subtract #减法运算
np.negative #负数运算
np.multiply #乘法运算
np.divide #除法运算
np.floor_divide #向下整除运算
np.power #指数运算
np.mod #模/余数
NumPy的聚合(最大/小值等)函数:
数组的计算之广播:
- 利用NumPy的广播功能可以实现不同大小数组的计算(加、减、乘等)的一组规则;
- 对维数不同的数组进行计算时,广播功能会通过一定的规则将其扩展到能够进行运算的维度。
数组的布尔掩码:
利用布尔掩码可以查看和操作NumPy数组中的值,对其进行判断或取出。
- 获取掩码的操作如:
In[1]: x = np.array([1, 2, 3, 4, 5])
In[2]: x != 3 #不等于
Out[2]: array([True, True, False, True, True], dtype=bool)
- 对布尔掩码进行操作如:
In[3]: rng = np.random.RandomState(0)
x = rng.randint(10, size=(3,4))
x
Out[3]: array([[5, 0, 3, 3],
[7, 9, 3, 5),
[2, 4, 7, 6]])
In[4]: np.sum(x < 6, axis=1) #每行有多少值小于6
Out[4]: array([4, 2, 2])
- 将布尔数组作为掩码来进行取值等操作:
In[5]: x[x < 5] #将布尔数组作为掩码并用于索引取值
Out[5]: array([0, 3, 3, 3, 2, 4])
花哨的索引:
花哨的索引与前面的简单索引类似,但传递的是索引数组,而不是单个标量。花哨的索引让我们能够快速地获得并修改复杂的数组值的子数据集。
数组的排序:
- NumPy的快速排序函数:np.sort和np.argsort;
- 部分排序:np.partirion函数,输入数组和数字K,输出的是一个新书组,其前K个数为数组中前K小(这K个数无序)的数;也可利用axis参数使其沿某一特定轴排序。