numpy常用命令

    xiaoxiao2023-11-06  148

    numpy 常用命令

    1 numpy数据类型2 numpy数组2.1 创建数组2.1.1 创建一维数组 arange2.1.2 创建多维数组 array 2.2 改变数组维度2.2.1 reshape()2.2.2 shape2.2.3 resize() 2.3 多维数组展平2.4 切片2.5 数组组合2.5.1 水平组合hstack2.5.2 垂直组合vstack2.5.3 数组组合dstack2.5.4 列组合column_stack2.5.5 行组合row_stack 2.6 数组分割2.7 numpy数组与python列表转换2.8 其他常用命令 3 矩阵3.1 创建单位矩阵 eye3.2 零向量和零矩阵3.3 one向量或矩阵3.4 mat矩阵和array矩阵的取值3.5 mat矩阵和array矩阵的转换3.6 转置矩阵T3.7 矩阵求逆3.8 合并块矩阵 bmat3.9 加减除3.9.1 常数运算3.9.2 矩阵相加减3.9.3 除法 divide3.9.4 add、multiply、subtract3.9.5 展平求和 sum 3.10 乘法3.10.1 常数相乘3.10.2 矩阵相乘3.10.3 向量相乘3.10.4 阶乘 4 常用函数4.1 读写文件4.2 算数平均值 mean4.3 最大值 最小值 max min4.4 取值范围 ptp4.5 中位数 median4.6 排序 msort4.7 方差 var4.8 标准差 std4.9 相邻元素差 diff4.10 算数平方根 sqrt4.11 满足条件索引 where4.12 根据索引获得元素 take4.13 最值比较4.14 e的指数 exp4.15 linespace4.16 界定便捷 clip4.17 满足条件的元素 compress4.18 三角函数4.19 最值索引 5 便携函数5.1 协方差 cov5.2 对角线元素diagonal5.3 矩阵的迹 trace5.4 相关系数 corrcoef5.5 绝对值abs5.6 多项式拟合5.7 符号函数sign5.8 去噪piecewise5.9 判断是否是实数 isreal

    1 numpy数据类型

    dtype 关键字说明intiint32或int64,由所在平台决定精度的整数int8 int16 int32 int64有符号整数uint8 uint16 uint32 uint64无符号整数float16 float32 float64复数complex64 complex128复数

    2 numpy数组

    2.1 创建数组

    2.1.1 创建一维数组 arange

    格式:np.arange(start,end,step,dtype) np.arange(10) >> [0 1 2 3 4 5 6 7 8 9] np.arange(2,10) >> [2 3 4 5 6 7 8 9] np.arange(2,10,3) >> [2 5 8] np.arange(2,10,3,dtype='float64') >> [2. 5. 8.]

    2.1.2 创建多维数组 array

    np.array([1,5]) >> [1 5] np.array([[1,5],[6,10]]) >> [[ 1 5] [ 6 10]]

    2.2 改变数组维度

    命令说明reshape()不在原数组上修改,返回改变后的结果shape得到或者设置维度(修改原数组)resize()原数组上修改

    2.2.1 reshape()

    a = np.arange(12) b = a.reshape(3,4) print(a) print(b) >> [ 0 1 2 3 4 5 6 7 8 9 10 11] >> [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]

    2.2.2 shape

    a = np.arange(12) a_shape = a.shape print(a_shape) >> (12,) a.shape = (3,4) print(a) >> [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]

    2.2.3 resize()

    a = np.arange(12) b = a.resize(3,4) print(b) >> None print(a) >> [[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]]

    2.3 多维数组展平

    命令:

    ravel()flatten()

    说明:

    不改变原数组 a = np.array([[1,2],[3,4]]) a_ravel = a.ravel() a_flatten = a.flatten() print(a_ravel) >> [1 2 3 4] print(a_flatten) >> [1 2 3 4]

    2.4 切片

    a = np.array([[1,2],[3,4]]) print(a) >> [[1 2] [3 4]] print(a[0,0]) >> 1 > print(a[:,0]) >> [1 3]

    其中":"表示任意,a[:,0]表示任意行的索引0列

    2.5 数组组合

    2.5.1 水平组合hstack

    a = np.array([[1,2],[3,4]]) b = np.array([[5,6],[7,8]]) print(np.hstack((a,b))) >> [[1 2 5 6] [3 4 7 8]]

    2.5.2 垂直组合vstack

    a = np.array([[1,2],[3,4]]) b = np.array([[5,6],[7,8]]) print(np.vstack((a,b))) >> [[1 2] [3 4] [5 6] [7 8]]

    2.5.3 数组组合dstack

    a = np.array([[1,2],[3,4]]) b = np.array([[5,6],[7,8]]) print(np.dstack((a,b))) >> [[[1 5] [2 6]] [[3 7] [4 8]]]

    2.5.4 列组合column_stack

    a = np.array([[1,2],[3,4]]) b = np.array([[5,6],[7,8]]) print(np.column_stack((a,b))) >> [[1 2 5 6] [3 4 7 8]]

    2.5.5 行组合row_stack

    a = np.array([[1,2],[3,4]]) b = np.array([[5,6],[7,8]]) print(np.row_stack((a,b))) >> [[1 2] [3 4] [5 6] [7 8]]

    2.6 数组分割

    a = np.array([[1,2],[3,4]]) print(a[0,0]) >> 1 print(a[:,0]) >> [1 3]

    2.7 numpy数组与python列表转换

    命令说明tolist()转成数组astype(类型)指定转换数组的类型 a = np.arange(5) print(a.tolist()) >> [0, 1, 2, 3, 4] print(a.astype(float)) >> [0. 1. 2. 3. 4.]

    2.8 其他常用命令

    功能命令获取数据类型dtype占用内存的字节数itemsize数组的维度或者数组轴的个数ndimreal返回复数的实部imag返回复数的虚部flat返回扁平迭代器

    3 矩阵

    3.1 创建单位矩阵 eye

    eye = np.eye(3) print(eye) >> [[1. 0. 0.] [0. 1. 0.] [0. 0. 1.]]

    3.2 零向量和零矩阵

    命令说明zero()创建零向量或矩阵zero_like()和目标一样维度的零向量或矩阵 # 1.创建零行向量 x_v = np.zeros(5) print(x_v) >> [0. 0. 0. 0. 0.] # 2.创建零矩阵 x_m = np.zeros([2,4]) print(x_m) >> [[0. 0. 0. 0.] [0. 0. 0. 0.]] # 3.创建和目标一样shape的向量或矩阵 x_v = np.array([1,2,3,4]) x_m = np.array([[1,2,3],[4,5,6]]) print(np.zeros_like(x_v)) >> [0 0 0 0] print(np.zeros_like(x_m)) >> [[0 0 0] [0 0 0]]

    3.3 one向量或矩阵

    命令说明ones()创建值为1的向量或矩阵ones_like()创建和目标一样维度的值为1的向量或矩阵 print(np.ones(5)) >> [1. 1. 1. 1. 1.] print(np.ones([2,3])) >> [[1. 1. 1.] [1. 1. 1.]] x_m = np.array([[1,2,3],[4,5,6]]) print(np.ones_like(x_m)) >> [[1 1 1] [1 1 1]]

    3.4 mat矩阵和array矩阵的取值

    mat取值:[m,n]array取值:[m][n] x_v_m = np.mat('1 2 3;4 5 6') x_v_a = np.array([[1,2,3],[4,5,6]]) # 取某一个元素 print(x_v_m[1,2]) >> 6 print(x_v_a[1][2]) >> 6 # 取一行,mat矩阵只要不取元素,结果都是矩阵,array取一行,得到的是行向量 print(x_v_m[0,:]) >> [[1 2 3]] print(x_v_a[0]) >> [1 2 3] # 取一列 print(x_v_m[:,0]) >> [[1] [4]]

    3.5 mat矩阵和array矩阵的转换

    .A 把mat转成arraynp.mat() 把mat转成array x_m = np.mat('1 2 3; 4 5 6') x_a = x_m.A print(type(x_a)) >> <class 'numpy.ndarray'> > x_m = np.mat(x_a) print(type(x_m)) >> <class 'numpy.matrix'>

    3.6 转置矩阵T

    x_m = np.mat('1 2 3; 4 5 6') print(x_m) >> [[1 2 3] [4 5 6]] print(x_m.T) >> [[1 4] [2 5] [3 6]]

    3.7 矩阵求逆

    .I 如果矩阵不可逆,会报异常 x_m = np.mat('1 2 3; 4 5 6 ; 0 0 1') print(x_m.I) >> [[-1.66666667 0.66666667 1. ] [ 1.33333333 -0.33333333 -2. ] [ 0. 0. 1. ]]

    3.8 合并块矩阵 bmat

    空格: 水平合并分号:垂直合并 x_m = np.mat('1 2;3 4') # 块状矩阵组合,分号表示下一行 print(np.bmat('x_m x_m')) >> [[1 2 1 2] [3 4 3 4]] print(np.bmat('x_m;x_m')) >> [[1 2] [3 4] [1 2] [3 4]]

    3.9 加减除

    3.9.1 常数运算

    a = np.mat('1 2 ; 3 4') print(a + 2) print(a - 2) print(a / 2)

    3.9.2 矩阵相加减

    a = np.mat('1 2 ; 3 4') b = np.mat('5 6 ; 7 8') print(a + b) >> [[ 6 8] [10 12]] print(a - b) >> [[-4 -4] [-4 -4]]

    3.9.3 除法 divide

    命令说明/和divide普通除法//和floor_divide保留整数部分 x_v1 = np.array([1,2,3]) x_v2 = np.array([3,5,6]) print(np.divide(x_v1,x_v2)) >> [0.33333333 0.4 0.5 ] print(np.floor_divide(x_v1,x_v2)) >> [0 0 0]

    3.9.4 add、multiply、subtract

    命令说明add加法multiply乘法subtract减法 reduce 直接返回结果accumulate 保留中间过程

    以加法为例:

    如果是行向量,返回加和如果是矩阵,按列为单位加和,得到1*n的行向量 x_v = np.array([1,2,3]) x_m = np.mat('1 2 3;4 5 6;7 8 9') print(np.add.reduce(x_v)) >> 6 print(np.add.reduce(x_m)) >> [[12 15 18]] # ------------------------------------------------- print(np.add.accumulate(x_v)) >> [1 3 6] print(np.add.accumulate(x_m)) >> [[ 1 2 3] [ 5 7 9] [12 15 18]]

    3.9.5 展平求和 sum

    如果是矩阵,相当于展平后求和 x_v = np.array([1,2,3,4]) x_m = np.array([[1,2,3],[4,5,6]]) # sum相当于战平后再计算加和 print(np.sum(x_v)) >> 10 print(np.sum(x_m)) >> 21

    3.10 乘法

    3.10.1 常数相乘

    a = np.mat('1 2 ; 3 4') print(a * 2) >> [[2 4] [6 8]]

    3.10.2 矩阵相乘

    类型*array对应元素相乘mat矩阵相乘 命令说明np.dot()矩阵相乘np.multiply()对应元素相乘 x_array_m = np.array([[1,2,3],[4,5,6]]) print(x_array_m * x_array_m) >> [[ 1 4 9] [16 25 36]] x_mat_m = np.mat('1 2 3; 4 5 6') print(x_mat_m * x_mat_m.T) >> [[14 32] [32 77]]

    3.10.3 向量相乘

    类型*dotmultiplyarray对应元素相乘内积对应元素相乘 x_v = np.array([1,2,3,4]) print(x_v * x_v) >> [ 1 4 9 16] print(np.dot(x_v,x_v)) >> 30 print(np.multiply(x_v,x_v)) >> [ 1 4 9 16]

    3.10.4 阶乘

    命令说明prod直接返回最大值comprod展平后计算阶乘 x_v = np.array([1,2,3,4]) x_m = np.array([[1,2,3],[6,7,8]]) # 1.阶乘prod,对于矩阵,相当于展平 print(np.prod(x_v)) >> 24 print(np.prod(x_m)) >> 2016 # 2.累阶乘cumprod print(np.cumprod(x_v)) >> [ 1 2 6 24] print(np.cumprod(x_m)) >> [ 1 2 6 36 252 2016]

    4 常用函数

    4.1 读写文件

    写文件:savetxt读文件:loadtxt delimiter:列的分隔符,默认是空格usecols:载入哪列,默认所有(元组的方式表示)unpack:是否转置,默认是否 matrix = np.mat('1 2 3 ; 4 5 6; 7 8 9') # 1.写文件,savetxt np.savetxt('matrix.csv',matrix) # 2.读文件 content = np.loadtxt('matrix.csv',delimiter=' ',usecols=(0,1,2),unpack=True) print(content)

    4.2 算数平均值 mean

    如果是矩阵,相当于把整个矩阵展评,然后求平均值 # 创建一个行向量和一个矩阵 x_v = np.array([1,2,3,4]) x_m = np.mat('1 2 3; 4 5 6') print(np.mean(x_v)) >> 2.5 print(np.mean(x_m)) >> 3.5

    4.3 最大值 最小值 max min

    # 创建一个行向量和一个矩阵 x_v = np.array([1,2,3,4]) x_m = np.mat('1 2 3; 4 5 6') # 最大值,max print(np.max(x_v)) print(np.max(x_m)) # 最小值,min print(np.min(x_v)) print(np.min(x_m))

    4.4 取值范围 ptp

    最大值和最小值的差 x_v = np.array([1,2,3,4]) # 最大值与最小值的差,ptp print(np.ptp(x_v)) >> 3

    4.5 中位数 median

    # 中位数,median,np.median(...)输出的中位数不一定存在于原数据 x_v = np.array([1,2,3,4]) print(np.median(x_v)) >> 2.5

    4.6 排序 msort

    x_v = np.array([1,2,5,1,2,6,2]) # 从小到大 print(np.msort(x_v)) >> [1 1 2 2 2 5 6]

    4.7 方差 var

    x_v = np.array([1,2,3,4]) x_m = np.array([[1,2,3],[4,5,6]]) # var是方差而不是伪方差 print(np.var(x_v)) >> 1.25 print(np.var(x_m)) >> 2.9166666666666665

    4.8 标准差 std

    矩阵其实也是相当于展平后计算标准差的 x_v = np.array([1,2,3,4]) x_m = np.array([[1,2,3],[4,5,6]]) print(np.std(x_v)) >> 1.118033988749895 print(np.std(x_m) >> 1.707825127659933

    4.9 相邻元素差 diff

    相邻元素的差,矩阵相当于计算多个行向量的结果 x_v = np.array([1,2,3,4]) x_m = np.array([[1,2,3],[4,5,6]]) print(np.diff(x_v)) >> [1 1 1] print(np.diff(x_m)) >> [[1 1] [1 1]]

    4.10 算数平方根 sqrt

    x_v = np.array([1,2,3,4]) x_m = np.array([[1,2,3],[4,5,6]]) print(np.sqrt(x_v)) >> [1. 1.41421356 1.73205081 2. ] print(np.sqrt(x_m)) >> [[1. 1.41421356 1.73205081] [2. 2.23606798 2.44948974]]

    4.11 满足条件索引 where

    对于行向量,返回的是满足where条件的索引对于矩阵,第一个是行的索引,第二个是列的索引 x_v = np.array([1,2,3,4]) x_m = np.array([[1,2,3],[4,5,6]]) # 对于行向量,返回的是满足where条件的索引 print(np.where(x_v > 2)) >> (array([2, 3], dtype=int64),) # 对于矩阵,第一个是行的索引,第二个是列的索引 print(np.where(x_m > 2)) >> (array([0, 1, 1, 1], dtype=int64), array([2, 0, 1, 2], dtype=int64)) ret = np.where(x_m > 2) for i in range(len(ret[0])): row_index = ret[0][i] column_index = ret[1][i] print(x_m[row_index][column_index]) >> 3 4 5 6

    4.12 根据索引获得元素 take

    向量,根据索引返回矩阵,相当于把矩阵展平,然后根据索引返回 x_v = np.array([1,2,3,4]) x_m = np.array([[1,2,3],[4,5,6]]) print(np.take(x_v,[0,1,2])) >> [1 2 3] print(np.take(x_m,[4,5])) >> [5 6]

    4.13 最值比较

    maximum 比较两个对象的最大值谁大,返回最大的那个对象minimum 比较两个对象的最小值谁小,返回最小的那个对象 x_v1 = np.array([0,2,3,4]) x_v2 = np.array([1,1,1,5]) # 比较两个对象的最大值谁大,返回最大的那个对象 print(np.maximum(x_v1,x_v2)) >> [1 2 3 5] # 比较两个对象的最小值谁小,返回最小的那个对象 print(np.minimum(x_v1,x_v2)) >> [0 1 1 4]

    4.14 e的指数 exp

    x_v = np.array([1,2,3,4]) x_m = np.array([[1,2,3],[4,5,6]]) print(np.exp(x_v)) >> [ 2.71828183 7.3890561 20.08553692 54.59815003] print(np.exp(x_m)) >> [[ 2.71828183 7.3890561 20.08553692] [ 54.59815003 148.4131591 403.42879349]]

    4.15 linespace

    linspace(start,end,num)

    start 起始end 终止,包括endnum 点的格式,相当于1/step x_v1 = np.linspace(0,10,10) print(x_v1) >> [ 0. 1.11111111 2.22222222 3.33333333 4.44444444 5.55555556 6.66666667 7.77777778 8.88888889 10. ]

    4.16 界定便捷 clip

    大于边界 取边界最大值小于边界 取边界最小值属于边界范围内,原数值输出 x_v = np.array([1,2,3,4]) print(x_v) print(np.clip(x_v,2,3)) >> [1 2 3 4] [2 2 3 3] x_m = np.array([[1,2,3],[4,5,6]]) print(x_m) print(np.clip(x_m,2,4)) >> [[1 2 3] [4 5 6]] >> [[2 2 3] [4 4 4]]

    4.17 满足条件的元素 compress

    只能基于向量操作,返回的是满足条件的元素,而不是索引 x_v = np.array([1,2,3,4]) print(x_v.compress(x_v > 2)) >> [3 4]

    4.18 三角函数

    sincostan x_m = np.random.rand(10) # sin() print(np.sin(x_m)) # cos() print(np.cos(x_m)) # tan() print(np.tan(x_m))

    4.19 最值索引

    argmax和argmin,返回最大|小值索引(矩阵相当于展平) x_v = np.array([1,2,3,4]) print(np.argmax(x_v)) >> 3 print(np.argmin(x_v)) >> 0 # 矩阵操作相当于展平jj x_m = np.array([[1,2,3],[4,5,6]]) print(np.argmax(x_m)) >> 5 print(np.argmin(x_m)) >> 0

    5 便携函数

    5.1 协方差 cov

    x_v1 = np.array([1,2,3,4]) x_v2 = np.array([4,5,6,7]) print(np.cov(x_v1,x_v2)) >> [[1.66666667 1.66666667] [1.66666667 1.66666667]]

    5.2 对角线元素diagonal

    diagonal返回一个对角元素构成的向量 x_m = np.array([[1,2,3,4],[2,3,4,5]]) print(x_m) >> [[1 2 3 4] [2 3 4 5]] print(np.diagonal(x_m)) >> [1 3]

    5.3 矩阵的迹 trace

    迹是对角元素的加和 x_m = np.array([[1,2,3,4],[2,3,4,5]]) print(x_m) >> [[1 2 3 4] [2 3 4 5]] print(np.trace(x_m)) >> 4

    5.4 相关系数 corrcoef

    x_v1 = np.array([1,2,3,4]) x_v2 = np.array([2,3,4,5]) # 相关系数,corrcoef print(np.corrcoef(x_v1,x_v2)) >> [[1. 1.] [1. 1.]]

    5.5 绝对值abs

    x_m = np.array([[-1,-2,-3],[1,2,3]]) print(np.abs(x_m)) >> [[1 2 3] [1 2 3]]

    5.6 多项式拟合

    import numpy as np # 随机生成样本 x = np.random.rand(50) * 50 y = -(np.sin(x)*2 + 0.5 * x ** 2) # polyfit,得到的是fit参数,相当于AX^2 + BX + C,第二个参数自由度,即用几次函数拟合样本输出 fit = np.polyfit(x,y,2) # polyfit,预测,用已有的fit,来预测样本x的输出 fit_y = np.polyval(fit,x) from matplotlib import pyplot as plt # 显示原样本 plt.plot(x,y,'b^',label='sample') # 显示对样本的预测 plt.plot(x,fit_y,'r.',label='predict') # 求多项式的根 print(np.roots(fit)) # 求拟合函数的导数 fit_der = np.polyder(fit) print('原来的系数',fit) print('求导后的系数',fit_der) # 绘制预测曲线 x_line = np.linspace(np.min(x),np.max(x),100) y_line = np.polyval(fit,x_line) plt.plot(x_line,y_line,color='y') # 画出预测曲线的导数曲线 y_line_fit_der = np.polyval(fit_der,x_line) plt.plot(x_line,y_line_fit_der,color='b') # 标记x轴和y轴 plt.xlabel('sample') plt.ylabel('label') # 画网格grid plt.grid(True) # 显示label plt.legend(loc=0) # 显示 plt.show(

    5.7 符号函数sign

    <0 返回-1>0 返回1=0 返回0 x_v = np.array([[1,2,3]]) - 2 x_m = np.array([[1,2,3],[4,5,6]]) - 2 print(np.sign(x_v)) >> [[-1 0 1]] print(np.sign(x_m)) >> [[-1 0 1] [ 1 1 1]]

    5.8 去噪piecewise

    第一个参数:要修改的对象第二个参数:列表内写条件第三个参数:对应每个条件满足后,元素被赋什么值 x_v = np.array([1,2,3,4]) - 1 x_m = np.array([[1,2,3],[4,5,6]]) print(x_v) print(np.piecewise(x_v,[x_v < 1,x_v > 2],[-100,100])) >> [0 1 2 3 ] >> [-100 0 0 100 ] print(x_m) print(np.piecewise(x_m,[x_m < 3,x_m > 5],[-100,100])) >> [[ 1 2 3] [ 4 5 6]] >> [[-100 -100 0] [ 0 0 100]]

    5.9 判断是否是实数 isreal

    x_v = np.array([1+2j]) print(np.isreal(x_v)) >> [False]
    最新回复(0)