目录
NumPy是python中很常用的基础库,在这里做个笔记。尽管内容不很全面,若加上自己举一反三的能力,掌握这些基本够用了。
-
NumPy数组创建:
- np.empty(shape, dtype = float, order = 'C') #shape形状, dtype类型, order存储元素的顺序(一般不用指定这一项)。
- np.zeros(shape, dtype = float, order = 'C')
- np.ones(shape, dtype = float, order = 'C')
- np.asarray(numpy, dtype = float, order = 'C')
- np.arange(start, stop, step, dtype)
- np.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
-
NumPy数组属性:
- ndarray.ndim 秩,即轴的数量或维度的数量
- ndarray.shape 数组的维度,对于矩阵,n 行 m 列
- ndarray.size 数组元素的总个数,相当于 .shape 中 n*m 的值
- ndarray.dtype ndarray 对象的元素类型
-
NumPy数组索引和切片
- a[2:7:2]
- a[...,1]
- x[[0,1,2], [0,1,0]] #取3个元素,坐标分别是 (0,0)(1,1),(2,0)
- x[x > 5] #返回大于5的元素(返回结构是一维数组)
-
NumPy数组Broadcast
- np.tile(b, (4, 1)) # 重复 b 的各个维度
-
NumPy数组操作
- a.reshape(4,2)
- np.transpose(a) #行列对调
- np.broadcast_to(a,(4,4)) #返回一个新形状的数组视图
- numpy.expand_dims(arr, axis) #在指定维度加一个维度
- numpy.squeeze(arr, axis) #删除长度为1的一维数组
- numpy.concatenate((a1, a2, ...), axis) # 数组链接
- numpy.stack(arrays, axis) #数组堆叠,会增加一个维度
- np.split(a,3) #将数组分为三个大小相等的子数组
-
NumPy数组计算
- np.bitwise_and(a, b) #与
- np.bitwise_or(13, 17) # 或
- np.invert(a) # 非
- np.left_shift(10,2) #左移
- np.right_shift(40,2) #右移
- np.char.add(['hello'],[' xyz']) #连接两个字符串 (NumPy主要是数据处理,虽然它支持对字符串操作,但我们不需要理解很多)
- np.sin(a), np.cos(a*np.pi/180), np.tan(a*np.pi/180)
- np.around(a, decimals = 1) #四舍五入,保留小数点后一位有效数字
- np.floor(a) #向下取整
- np.ceil(a) #向上取整
- np.add(a,b), np.subtract(a,b), np.multiply(a,b),np.divide(a,b) #加减乘除
- np.reciprocal(a) #倒数
- np.power(a,2) #指数计算,若第二个元素是数组,则计算对应元素的指数
- np.mod(a,b) #取模,若第二个元素是数组,则计算对应元素取模
- np.amin(a,1) #计算指定维度的最小值
- np.amax(a) #计算指定维度的最大值
- np.ptp(a, axis = 1) # 计算指定维度最大最小值的差
- np.percentile(a, 50, axis=0) #获取百分位数
- np.median(a, axis = 0) #获取中位数,中位数就是百分位数的特例
- np.mean(a, axis = 0) #获取某一个维度的算术平均值
- np.average(a, axis = 1, weights = wt)) #获取加权平均值,若不指定加权值,则结果就是算术平均值
- np.std([1,2,3,4]) # 获取标准差
- np.var([1,2,3,4]) #获取方差
-
NumPy数组排列和条件筛选
- numpy.sort(a, axis, kind, order) # kind 排列算法,默认快速排序, order指定排列字段
- numpy.argsort(a, axis, kind, order) # 和sort不同的是,argsort返回对应数组的索引
- numpy.lexsort #用于对多个序列进行排序
- np.partition(a, (1, 3)) # 小于 1 的在前面,大于 3 的在后面,1和3之间的在中间
- np.argmax(a, axis = 0) #返回指定维度最大值
- np.argmin(a, axis = 0) #返回指定维度最小值
- np.nonzero (a) #返回非零元素索引
- np.where(x > 3) # 大于 3 的元素的索引
- np.extract(condition, x) #使用条件提取元素
-
NumPy数组字节序交换
- numpy.ndarray.byteswap() # 大小端字节序交换
-
NumPy数组副本和视图
- 视图
- numpy 的切片操作返回原数据的视图
- 调用 ndarray 的 view() 函数产生一个视图
- 副本:
- Python 序列的切片操作,调用deepCopy()函数
- 调用 ndarray 的 copy() 函数产生一个副本
- 视图
-
NumPy矩阵库Matrix
- a.T #转置数组
- np.matlib.empty((2,2)) #返回一个2*2矩阵,填充为随机数据
- np.matlib.zeros((2,2)) #返回一个2*2矩阵,填充为0
- np.matlib.ones((2,2)) #返回一个2*2矩阵,填充为1
- np.matlib.eye(n = 3, M = 4, k = 0, dtype = float) # 返回n行m列,对角元素为1,其他元素为0的矩阵
- np.matlib.identity(5, dtype = float) #返回一个单位矩阵
- np.matlib.rand(3,3) #创建指定大小的矩阵
-
NumPy线性代数
- numpy.dot(a, b, out=None) #两个数组的点积,即元素对应相乘
- np.vdot(a,b) #两个向量的点积
- np.inner(np.array([1,2,3]),np.array([0,1,0])) # 返回一维数组的向量内积。对于更高的维度,它返回最后一个轴上的和的乘积
- np.matmul(a,b) #返回两个数组的矩阵乘积
- np.linalg.det(a) #计算输入矩阵的行列式
- numpy.linalg.solve() #矩阵形式的线性方程的解
- np.linalg.inv(x) #计算矩阵的乘法逆矩阵
-
NumPy IO
- np.save('outfile.npy',a)
- p.load('outfile.npy')
-
NumPy Matplotlib绘图
import numpy as np
from matplotlib import pyplot as plt
x = np.arange(1,11)
y = 2 * x + 5
plt.title("Matplotlib demo")
plt.xlabel("x axis caption")
plt.ylabel("y axis caption")
plt.plot(x,y)
plt.show()