这篇也比较好numpy的21个常用知识
创建数组对象
创建ndayyay
对象有很多种,如创建一维数组,二维数组和多维数组
一维数组
1,使用array
函数,通过list
创建数组对象
2,使用arange
函数,指定数组的范围,并可以指定步长。如果不指定步长,则默认为一,且不包含末尾。是[0,30)的区间
3,linspace
函数,指定范围均匀间隔
4.random
随机产生
6,normal
产生正太分布随机数
二维数组
1,使用array
函数,通过嵌套list创建数组对象,在array( [ ] )括号内部的方括号中添加数组,通过嵌套形成二维数组
2.,
使用zeros,创建全为零的数组
使用ones,创建全为1的数组
使用full,创建全部相同数字的数组
使用eye ,创建单位矩阵
3,reshape
重新定义矩阵的维度
reshape(2,3)生成一个两行三列的数组
4,rand和randint
三维数组
1,创建多维数组,通过随机的方式,产生1·100之间3维的4行4列的多维数组
3,
arange数字在1··25,间隔为一(不指定默认为一),共计24个数,所以可以产生两个3行4列的数组
24=2x3x4
数组的对象属性
array本身的属性
shape
:返回一个元组,表示array的维度ndim
:一个数字,表示array的维度的数目size
:一个数字,表示array中所有数据元素的数目dtype
:array中元素的数据类型
数组的索引和切片
这里的索引和切片有点类似与python中的,有正索引和负索引,负索引从-1开始
2,通过索引可以修改数组
还有一种索引
花式索引
1,通过数字的位置进行索引
2,二维数组通过行,列进行索引
布尔索引
1,通过布尔值来指定索引对象
2,逻辑反转,通过~符号
统计方法
统计方法主要包括:sum()、mean()、std()、var()、min()、max()、argmin()、argmax()、cumsum()等,分别用于对数组中的元素求和、求平均、求标准差、求方差、找最小、找最大、最小值的索引值、最大值的索引值、求轴向累加和等,
轴向累加和:
二、.其他方法
1,all() / any()方法:判断数组是否所有元素都是True / 判断数组是否有为True的元素。
2,astype()方法:拷贝数组,并将数组中的元素转换为指定的类型。
3,dump()方法:保存数组到文件中,可以通过 NumPy 中的load()函数从保存的文件中加载数据创建数组
4,fill()方法:向数组中填充指定的元素。
5,flatten()方法:将多维数组扁平化为一维数组。。
6,nonzero()方法:返回非0元素的索引。
7,round()方法:对数组中的元素做四舍五入操作。
8,sort()方法:对数组进行就地排序。
9,swapaxes()和transpose()方法:交换数组指定的轴。
10,tolist()方法:将数组转成Python中的list。
数组之间的运算
一元函数
函数 | 说明 |
---|---|
abs / fabs | 求绝对值的函数 |
sqrt | 求平方根的函数,相当于array ** 0.5 |
square | 求平方的函数,相当于array ** 2 |
exp | 计算的函数 |
log / log10 / log2 | 对数函数(e为底 / 10为底 / 2为底) |
sign | 符号函数(1 - 正数;0 - 零;-1 - 负数) |
ceil / floor | 上取整 / 下取整 |
isnan | 返回布尔数组,NaN对应True,非NaN对应False |
isfinite / isinf | 判断数值是否为无穷大的函数 |
cos / cosh / sin | 三角函数 |
sinh / tan / tanh | 三角函数 |
arccos / arccosh / arcsin | 反三角函数 |
arcsinh / arctan / arctanh | 反三角函数 |
rint / round | 四舍五入函数 |
二元函数
函数 | 说明 |
---|---|
add(x, y) / substract(x, y) | 加法函数 / 减法函数 |
multiply(x, y) / divide(x, y) | 乘法函数 / 除法函数 |
floor_divide(x, y) / mod(x, y) | 整除函数 / 求模函数 |
allclose(x, y) | 检查数组x和y元素是否几乎相等 |
power(x, y) | 数组的元素和数组的元素,计算 |
maximum(x, y) / fmax(x, y) | 两两比较元素获取最大值 / 获取最大值(忽略NaN) |
minimum(x, y) / fmin(x, y) | 两两比较元素获取最小值 / 获取最小值(忽略NaN) |
dot(x, y) | 点积运算(数量积,通常记为,用于欧几里得空间(Euclidean space)) |
inner(x, y) | 内积运算(内积的含义要高于点积,点积相当于是内积在欧几里得空间$$的特例,而内积可以推广到赋范向量空间,只要它满足平行四边形法则即可) |
cross(x, y) | 叉积运算(向量积,通常记为,运算结果是一个向量) |
outer(x, y) | 外积运算(张量积,通常记为,运算结果通常是一个矩阵) |
intersect1d(x, y) | 计算x和y的交集,返回这些元素构成的有序数组 |
union1d(x, y) | 计算x和y的并集,返回这些元素构成的有序数组 |
in1d(x, y) | 返回由判断x 的元素是否在y中得到的布尔值构成的数组 |
setdiff1d(x, y) | 计算x和y的差集,返回这些元素构成的数组 |
setxor1d(x, y) | 计算x和y的对称差,返回这些元素构成的数组 |
广播机制
两个数组形状完全相同时,我们发现形状不同的数组仍然有机会进行二元运算,但也绝对不是任意的数组都可以进行二元运算。简单的说,只有两个数组后缘维度相同或者其中一个数组后缘维度为1时,广播机制会被触发,而通过广播机制如果能够使两个数组的形状一致,才能进行二元运算。所谓后缘维度,指的是数组shape属性对应的元组中最后一个元素的值(从后往前数最后一个维度的值),例如,我们之前打开的图像对应的数组后缘维度为3,3行4列的二维数组后缘维度为4,而有5个元素的一维数组后缘维度为5。简单的说就是,后缘维度相同或者其中一个数组的后缘维度为1,就可以应用广播机制;而广播机制如果能够使得数组的形状一致,就满足了两个数组对应元素做运算的需求
其他常用函数
函数 | 说明 |
---|---|
unique | 去除数组重复元素,返回唯一元素构成的有序数组 |
copy | 返回拷贝数组得到的数组 |
sort | 返回数组元素排序后的拷贝 |
split / hsplit / vsplit | 将数组拆成若干个子数组 |
stack / hstack / vstack | 将多个数组堆叠成新数组 |
concatenate | 沿着指定的轴连接多个数组构成新数组 |
append / insert | 向数组末尾追加元素 / 在数组指定位置插入元素 |
argwhere | 找出数组中非0元素的位置 |
extract / select / where | 按照指定的条件从数组中抽取或处理数组元素 |
flip | 沿指定的轴翻转数组中的元素 |
fromiter | 通过迭代器创建数组对象 |
fromregex | 通过读取文件和正则表达式解析获取数据创建数组对象 |
repeat / tile | 通过对元素的重复来创建新数组 |
roll | 沿指定轴对数组元素进行移位 |
resize | 重新调整数组的大小 |
place / put | 将数组中满足条件的元素/指定的元素替换为指定的值 |
partition | 用选定的元素对数组进行一次划分并返回划分后的数组 |
矩阵运算
线性代数快速回顾
向量也叫矢量,是一个同时具有大小和方向,且满足平行四边形法则的几何对象。与向量相对的概念叫标量或数量,标量只有大小、绝大多数情况下没有方向。
向量可以进行加、减、数乘、点积、叉积等运算。
行列式由向量组成,它的性质可以由向量解释。
行列式可以使用行列式公式计算: 。
高阶行列式可以用代数余子式展开成多个低阶行列式,如:。
矩阵是由一系列元素排成的矩形阵列,矩阵里的元素可以是数字、符号或数学公式。
矩阵可以进行加法、减法、数乘、乘法、转置等运算。
逆矩阵用表示,;没有逆矩阵的方阵是奇异矩阵。
如果一个方阵是满秩矩阵(矩阵的秩等于矩阵的阶数),该方阵对应的线性方程有唯一解。
线性代数模块
NumPy 的linalg模块中有一组标准的矩阵分解运算以及诸如求逆和行列式之类的函数,它们跟 MATLAB 和 R 等语言所使用的是相同的行业标准线性代数库,下面的表格列出了numpy以及linalg模块中常用的跟线性代数相关的函数。
函数 | 说明 |
---|---|
diag | 以一维数组的形式返回方阵的对角线元素或将一维数组转换为方阵(非对角元素元素为0) |
vdot | 向量的点积 |
dot | 数组的点积 |
inner | 数组的内积 |
outer | 数组的叉积 |
trace | 计算对角线元素的和 |
norm | 求模(范数)运算 |
det | 计算行列式的值(在方阵上计算会得到一个标量) |
matrix_rank | 计算矩阵的秩 |
eig | 计算矩阵的特征值(eigenvalue)和特征向量(eigenvector) |
inv | 计算非奇异矩阵(阶方阵)的逆矩阵 |
pinv | 计算矩阵的摩尔-彭若斯(Moore-Penrose)广义逆 |
qr | QR分解(把矩阵分解成一个正交矩阵与一个上三角矩阵的积) |
svd | 计算奇异值分解(singular value decomposition) |
solve | 解线性方程组,其中是一个方阵 |
lstsq | 计算的最小二乘解 |