1.ndarray
1.1 ndarray的生成
利用np.array可自动将序列转换为n维数组
data1 = [ 6 , 7.5 , 8 , 0 , 1 ]
arr1 = np. array( data1)
arr1
data2 = [ [ 1 , 2 , 3 , 4 ] , [ 5 , 6 , 7 , 8 ] ]
arr2 = np. array( data2)
arr2
可以利用.ndim查看维度数.shape查看形状.dtype数据的类型
1.2 特殊函数构造
np.asarray(a, dtype=None, order=None, *, like=None) 全零:numpy.zeros(shape, dtype=float, order=‘C’) 全一:numpy.ones(shape, dtype=float, order=‘C’) -全空: numpy.empty(shape, dtype=float, order=‘C’) 等差:numpy.arange([start,] stop, [step,], dtype=None) 等间隔:numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None) 斜角为1:numpy.eye(N, M=None, k=0, dtype=float, order=‘C’) 随机:numpy.random.rand(d0, d1, …, dn) 正态随机:numpy.random.randn(d0, d1, …, dn) 填充指定数字:numpy.full(shape, fill_value, dtype=None, order=‘C’) 单位阵:numpy.identity(n, dtype=float)
1.3 数据类型
数据类型 描述字符 代码 int8 8 位有符号整数(-128 到 127) 'i1' int16 16 位有符号整数(-32768 到 32767) 'i2' int32 32 位有符号整数(-2147483648 到 2147483647) 'i4' int64 64 位有符号整数(-9223372036854775808 到 9223372036854775807) 'i8' uint8 8 位无符号整数(0 到 255) 'u1' uint16 16 位无符号整数(0 到 65535) 'u2' uint32 32 位无符号整数(0 到 4294967295) 'u4' uint64 64 位无符号整数(0 到 18446744073709551615) 'u8' float16 16 位浮点数(半精度) 'f2' float32 32 位浮点数(单精度) 'f4' float64 64 位浮点数(双精度) 'f8' float128 128 位浮点数(扩展精度,取决于平台) 'f16' complex64 64 位复数,由两个 32 位浮点数组成(实部和虚部) 'c8' complex128 128 位复数,由两个 64 位浮点数组成(实部和虚部) 'c16' complex256 256 位复数,由两个 128 位浮点数组成(实部和虚部,取决于平台) 'c32' bool_ 布尔类型(True 或 False) '?' object_ Python 对象类型 'O' string_ 固定长度的字符串类型(默认长度为 1) 'S' unicode_ 固定长度的 Unicode 字符串类型(默认长度为 1) 'U'
2.索引与切片
一言以蔽之,[]中逗号“,”分割整体,“:”表示集合 一般索引与切片:arr[
x
x
x ][
y
y
y ][
z
z
z ]······或者arr[
x
x
x ,
y
y
y ,
z
z
z ,······] 神奇索引:arr[[
x
x
x ,
y
y
y ,
z
z
z ,······]] 布尔索引:两个矩阵重叠 具体详见:Numpy基础(二)索引与切片
3. 操作
3.1数组运算
arr = np. array( [ [ 1 . , 2 . , 3 . ] , [ 4 . , 5 . , 6 . ] ] )
arr
arr * arr
arr - arr
'''
array([[1., 2., 3.],
[4., 5., 6.]])
array([[ 1., 4., 9.],
[16., 25., 36.]])
array([[0., 0., 0.],
[0., 0., 0.]])
'''
1 / arr
arr ** 0.5
'''
array([[1. , 0.5 , 0.3333],
[0.25 , 0.2 , 0.1667]])
array([[1. , 1.4142, 1.7321],
[2. , 2.2361, 2.4495]])
'''
arr2 = np. array( [ [ 0 . , 4 . , 1 . ] , [ 7 . , 2 . , 12 . ] ] )
arr2
arr2 > arr
'''
array([[ 0., 4., 1.],
[ 7., 2., 12.]])
array([[False, True, False],
[ True, False, True]])
'''
3.2 换轴
arr. T
arr. transpose( ( 1 , 0 , 2 ) )
arr. swapaxes( 1 , 2 )
3.3 通用函数
函数名称 描述 主要参数 np.add(x1, x2)
逐元素相加(等价于 x1 + x2
) x1
, x2
: 输入数组;out
(可选): 输出数组np.subtract(x1, x2)
逐元素相减(等价于 x1 - x2
) 同上 np.multiply(x1, x2)
逐元素相乘(等价于 x1 * x2
) 同上 np.divide(x1, x2)
逐元素除法(等价于 x1 / x2
) 同上 np.true_divide
与 np.divide
相同,返回浮点结果 同上 np.floor_divide
逐元素向下取整除法(等价于 //
) 同上 np.power(x1, x2)
逐元素计算 x1
的 x2
次幂(等价于 x1 ** x2
) x1
: 基数;x2
: 指数np.sqrt(x)
逐元素计算平方根 x
: 输入数组np.square(x)
逐元素计算平方(等价于 x ** 2
) 同上 np.exp(x)
逐元素计算自然指数(e^x
) 同上 np.log(x)
逐元素计算自然对数(ln(x)
) 同上 np.log10(x)
逐元素计算以10为底的对数 同上 np.log2(x)
逐元素计算以2为底的对数 同上 np.sin(x)
逐元素计算正弦值 同上 np.cos(x)
逐元素计算余弦值 同上 np.tan(x)
逐元素计算正切值 同上 np.arcsin(x)
逐元素计算反正弦值 同上 np.arccos(x)
逐元素计算反余弦值 同上 np.arctan(x)
逐元素计算反正切值 同上 np.sinh(x)
逐元素计算双曲正弦值 同上 np.cosh(x)
逐元素计算双曲余弦值 同上 np.tanh(x)
逐元素计算双曲正切值 同上 np.absolute(x)
逐元素计算绝对值(等价于 abs(x)
) 同上 np.sign(x)
逐元素返回符号(-1, 0, 1) 同上 np.ceil(x)
逐元素向上取整 同上 np.floor(x)
逐元素向下取整 同上 np.rint(x)
逐元素四舍五入到最近整数 同上 np.mod(x1, x2)
逐元素取模(余数) x1
: 被除数;x2
: 除数np.maximum(x1, x2)
逐元素比较两个数组,返回较大值 x1
, x2
: 输入数组np.minimum(x1, x2)
逐元素比较两个数组,返回较小值 同上 np.clip(x, a_min, a_max)
将数组元素限制在 [a_min, a_max]
范围内 x
: 输入数组;a_min
, a_max
: 限制范围np.isnan(x)
逐元素判断是否为NaN x
: 输入数组np.isinf(x)
逐元素判断是否为无穷大 同上 np.isfinite(x)
逐元素判断是否为有限值 同上 np.logical_and(x1, x2)
逐元素逻辑与操作 x1
, x2
: 布尔数组np.logical_or(x1, x2)
逐元素逻辑或操作 同上 np.logical_not(x)
逐元素逻辑非操作 x
: 布尔数组np.greater(x1, x2)
逐元素判断 x1 > x2
x1
, x2
: 输入数组np.less(x1, x2)
逐元素判断 x1 < x2
同上 np.equal(x1, x2)
逐元素判断 x1 == x2
同上
3.4 线性代数
函数名 描述 参数 numpy.dot(a, b)
计算两个数组的点积(内积)。 a
: 第一个数组;b
: 第二个数组。numpy.vdot(a, b)
计算两个向量的点积(支持复数)。 a
: 第一个向量;b
: 第二个向量。numpy.inner(a, b)
计算两个数组的内积。 a
: 第一个数组;b
: 第二个数组。numpy.outer(a, b)
计算两个向量的外积。 a
: 第一个向量;b
: 第二个向量。numpy.matmul(a, b)
计算两个数组的矩阵乘积。 a
: 第一个数组;b
: 第二个数组。numpy.linalg.det(a)
计算矩阵的行列式。 a
: 输入矩阵。numpy.linalg.inv(a)
计算矩阵的逆矩阵。 a
: 输入矩阵。numpy.linalg.pinv(a)
计算矩阵的伪逆矩阵。 a
: 输入矩阵。numpy.linalg.eig(a)
计算方阵的特征值和特征向量。 a
: 输入方阵。numpy.linalg.eigh(a)
计算对称或厄米特矩阵的特征值和特征向量。 a
: 输入对称或厄米特矩阵。numpy.linalg.svd(a)
计算矩阵的奇异值分解。 a
: 输入矩阵。numpy.linalg.qr(a)
计算矩阵的QR分解。 a
: 输入矩阵。numpy.linalg.cholesky(a)
计算矩阵的Cholesky分解。 a
: 输入正定矩阵。numpy.linalg.norm(x)
计算向量或矩阵的范数。 x
: 输入向量或矩阵;ord
: 范数类型(默认为2范数)。numpy.linalg.cond(x)
计算矩阵的条件数。 x
: 输入矩阵;p
: 范数类型(默认为2范数)。numpy.linalg.solve(a, b)
求解线性方程组 ax = b
。 a
: 系数矩阵;b
: 常数向量或矩阵。numpy.linalg.lstsq(a, b)
求解线性最小二乘问题。 a
: 系数矩阵;b
: 常数向量或矩阵;rcond
: 奇异值截断阈值。numpy.linalg.matrix_rank(a)
计算矩阵的秩。 a
: 输入矩阵;tol
: 奇异值截断阈值。numpy.linalg.trace(a)
计算矩阵的迹(对角线元素之和)。 a
: 输入矩阵。numpy.linalg.matrix_power(a, n)
计算矩阵的幂次。 a
: 输入矩阵;n
: 幂次。
3.5 统计学方法
方法 描述 示例 np.sum() 计算数组元素的和 np.sum(arr) np.mean() 计算数组元素的平均值 np.mean(arr) np.average() 计算数组元素的加权平均值 np.average(arr, weights=weights) np.median() 计算数组元素的中位数 np.median(arr) np.std() 计算数组元素的标准差 np.std(arr) np.var() 计算数组元素的方差 np.var(arr) np.min() 找出数组中的最小值 np.min(arr) np.max() 找出数组中的最大值 np.max(arr) np.argmin() 找出数组中最小值的索引 np.argmin(arr) np.argmax() 找出数组中最大值的索引 np.argmax(arr) np.percentile() 计算数组元素的百分位数 np.percentile(arr, 50) np.quantile() 计算数组元素的分位数 np.quantile(arr, 0.5) np.cumsum() 计算数组元素的累积和 np.cumsum(arr) np.cumprod() 计算数组元素的累积积 np.cumprod(arr) np.prod() 计算数组元素的乘积 np.prod(arr) np.corrcoef() 计算数组的相关系数矩阵 np.corrcoef(arr1, arr2) np.cov() 计算数组的协方差矩阵 np.cov(arr1, arr2) np.histogram() 计算数组的直方图 np.histogram(arr, bins=10)