1.numpy简介:
NumPy 是一个运行速度非常快的数学库,主要用于数组计算,包含:
一个强大的N维数组对象 ndarray,
广播功能函数,
整合 C/C++/Fortran 代码的工具,
线性代数、傅里叶变换、随机数生成等功能。
2.numpy ndarray简易示例
import numpy as np
a = np.array([[1, 2], [2, 3]])
print(a)
3.numpy数组属性
ndarray.ndim 秩,即轴的数量或维度的数量
ndarray.shape 数组的维度,对于矩阵,n 行 m 列
ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
ndarray.dtype ndarray 对象的元素类型
ndarray.itemsize ndarray 对象中每个元素的大小,以字节为单位
ndarray.flags ndarray 对象的内存信息
ndarray.real ndarray元素的实部
ndarray.imag ndarray 元素的虚部
ndarray.data 包含实际数组元素的缓冲区,由于一般通过数组的索引获取元素,所以通常不需要使用这个属性
4.创建ndarray
import numpy as np
#默认为浮点数
x=np.zeros(5)
print(x)
#设置类型为整数
y=np.zeros(5, dtype=int)
print(y)
#自定义类型
z=np.zeros((2,2),dtype=[('x','i4'),('y','i4')])
print(z)
np.array创建数组,np.zeros创建全为零的数组,np.ones创建全为1的数组,np.empty创建没有具体值的数组
5.创建随机数组
import numpy as np
a=np.random.rand(10,10)#创建指定形状的数组,每个数组元素值的范围在0到1之间
print(a)
a = np.random.uniform(0, 100)#创建指定范围的一个数
print(a)
a=np.random.randint(0,100)#创建指定范围的一个整数
print(a)
a=np.random.normal(1.75,0.1,(2,3))
print(a)
6.索引和切片
跟列表最重要的区别在于,数组切片是原始数组的视图。这意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上,示例如下:
import numpy as np
a=np.arange(10)#创建ndarray对象
s=slice(2,7,2)#内置函数slice用来切片
print(a[s])
b=a[2:7:2]
print(b)
7.数学函数
三角函数:NumPy 提供了标准的三角函数:sin()、cos()、tan()。
arcsin,arccos,和 arctan 函数返回给定角度的 sin,cos 和 tan 的反三角函数
同时numpy.degrees() 函数将弧度转换为角度。
舍入函数:numpy.around() 函数返回指定数字的四舍五入值。
numpy.around(a,decimals)
向下取整:numpy.floor() 返回小于或者等于指定表达式的最大整数,即向下取整。
向上取整:numpy.ceil() 返回大于或者等于指定表达式的最小整数,即向上取整。
8.统计函数
axis:轴
numpy.amin() 用于计算数组中的元素沿指定轴的最小值。
numpy.amax() 用于计算数组中的元素沿指定轴的最大值。
numpy.ptp()函数计算数组中元素最大值与最小值的差(最大值 - 最小值)。
百分位数是统计中使用的度量,表示小于这个值的观察值的百分比。 函数numpy.percentile()接受以下参数。
numpy.percentile(a, q, axis)其中q为要计算的百分位数
numpy.median() 函数用于计算数组 a 中元素的中位数(中值)
numpy.mean() 函数返回数组中元素的算术平均值。 如果提供了轴,则沿其计算。
算术平均值是沿轴的元素的总和除以元素的数量。
numpy.average() 函数根据在另一个数组中给出的各自的权重计算数组中元素的加权平均值。
该函数可以接受一个轴参数。 如果没有指定轴,则数组会被展开。
加权平均值即将各数值乘以相应的权数,然后加总求和得到总体值,再除以总的单位数。
标准差:std
方差:var
sum:对数组中全部或某轴向的元素求和。零长度的数组的sum为0
min,max:最小值,最大值
argmin,argmax:最小值元素的索引,最大值元素的索引
cumsum:所有元素的累加
cumprod:所有元素的累积
#示例
import numpy as np
print(np.std([1,2,3,4]))
print(np.var([1,2,3,4]))
9.线性代数
numpy提供了一个用于矩阵乘法的dot函数(既是一个数组方法,也是numpy命名空间中的一个函数)
常用的linalg函数:
diag以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0)
dot矩阵乘法
trace计算对角线元素的和
det计算矩阵行列式
eig计算方阵的特征值和特征向量
inv计算方阵的逆
pinv计算矩阵的Mooer-Penrose伪逆
qr计算OR分解
svd计算奇异值分解(SVD)
solve解线性方程组Ax=b,其中A为一个方阵
lstsq计算Ax=b的最小二乘解