• numpy的一些用法


    numpy是python中矩阵运算的模块。

    1.numpy.genfromtxt()可以打开一个文件,并存储为ndarray的类型,delimiter参数指明分隔符,dtype参数指明该以什么类型存储。help()函数可以查python的函数具体信息。

    2.numpy.array()可以生成一个矩阵. shape属性是矩阵的行和列数

    ​3.ndarray类型中,所有元素类型应该一样

    4.矩阵索引的运用以及将布尔向量作为索引

     5.numpy的布尔向量的逻辑运算。

    6.函数astype()可以转换矩阵中的元素类型;sum函数对矩阵元素求和,当axis = 0时对列求和,当axis = 1时对行求和。

    7.矩阵的加减乘除。

      a+b的结果是a和b的对应元素相加,a+1是a的每个元素加1。

      a**2是a的每个元素取平方,np.sin(a)是对a每个元素取正弦函数。

      a*b是a,b中对应元素相乘,a.dot(b)(或者np.dot(a,b))是矩阵相乘。

    8.矩阵的初始化。

      arange(x):生成一个向量,元素为从0到x-1

      arange(start, end, step), 生成一个向量,第一个元素是start,每个元素是前一个元素加上step,最后一个元素是小于end的最大值(不能等于end)

      reshap((x,y)),生成形如x*y的矩阵。

      linspace(start, end, n), 生成一个向量,要求向量中有n个元素,第一个元素为start,最后一个元素为end。

      zeros((x,y)) 生成一个形如x*y的0矩阵。

      ones((x, y))生成一个形如x*y的元素为1的矩阵。

      np.random.random((x, y))生成一个x*y的矩阵,每个元素都是0到1之间的随机数。

    (左图为代码,右图为运行结果)

    9.取整函数,矩阵与向量的变换。

      np.around(a),四舍五入取整

      np.floor(a), 向下取整

      np.ceil(a), 向上取整

      b = a.reshape((x, y)), 将向量a变成x*y的矩阵

      a = b.ravel(), 将矩阵b拉成向量。

      c = b.T, 矩阵c是矩阵b的转置。

    (左图为代码,右图为运行结果)

    10.矩阵的拼接

      np.hstack((a, b)):  水平拼接

      np.vstack((a, b)): 竖直拼接

      np.hsplit(a, (x1, x2,  x3......)): 对矩阵a进行水平分割,(x1, x2,  x3......)是切口,xi表示将x(i-1)于xi列之间分割开

      np.vsplit(a, (x1, x2,  x3......)): 对矩阵a进行垂直分割,(x1, x2,  x3......)是切口,xi表示将x(i-1)于xi行之间分割开

    (左图为代码,右图为运行结果)

    11.矩阵排序

      b = np.sort(a, axis = 0):对矩阵a的每一列进行从小到大排序,然后组合成新矩阵b

      b = np.sort(a, axis = 1):对矩阵a的每一行进行从小到大排序,然后组合成新矩阵b

      index = np.argsort(a): 按照元素从小到大的顺序依次返回a中对应元素的索引。

    1 import numpy as np
    2 
    3 a = np.around(10*np.random.random((3, 3)))
    4 print(a)
    5 b = np.sort(a, axis=0)
    6 print(b)
    7 c = np.sort(a, axis=1)
    8 print(c)

      运行结果如下

    12. argmax函数

      b = np.argmax(a, axis = 0)返回的是一个列表,b[i]是矩阵a的第i列向量的最大元素所在的行的索引

      b = np.argmax(a, axis = 0)返回的是一个列表,b[i]是矩阵a的第i行向量的最大元素所在的列的索引

     1 import numpy as np
     2 
     3 a = np.around(10*np.random.random((3, 3)))
     4 print(a)
     5 b = np.argmax(a, axis=0)
     6 print(b)
     7 print(a[b, range(a.shape[1])])
     8 c = np.argmax(a, axis=1)
     9 print(c)
    10 print(a[range(a.shape[0]), c])

      运行结果如下

    13. tile函数

      np.tile(a, (x, y))将矩阵或向量a在水平方向扩展x倍,在竖直方向扩展y倍,最后是一个二维矩阵。

    1 import numpy as np
    2 
    3 a = np.array([1,2,3])
    4 b = np.tile(a, (2, 3))
    5 c = np.array([[1,2],
    6               [3,4]])
    7 d = np.tile(c, (2,3))
    8 print(b)
    9 print(d)

    运行结果如下

     13.random.norml()和random.multvariate_normal

    看下面的代码

     1 import seaborn as sns
     2 import numpy as np
     3 import matplotlib as mpl
     4 import matplotlib.pyplot as plt
     5 
     6 
     7 x = np.random.normal(loc=5, scale=0.4, size=(5, 5) )
     8 print(x)
     9 y = np.random.multivariate_normal(mean=[1, 1], cov=[[1, 0.5], [0.5, 1]], size=(2, 2))
    10 print(y)

      第七行,np.random.normal(loc, scale, size)返回一个矩阵(也可以大于二维,说张量更好),该矩阵的形状由size给定,该矩阵的所有元素是正态分布的样本,该正太分布的期望是参数loc, 方差是参数scale。

      第九行,np.random.multivariate_normal(mean, cov, size)返回一个矩阵(也可以大于二维,说张量更好),该矩阵的形状由size给定,该矩阵的所有元素是多维正态分布的样本,该正太分布的均值向量是参数loc, 协方差矩阵是参数scale。

      运行结果如下

  • 相关阅读:
    聊聊LiteOS事件模块的结构体、初始化及常用操作
    有了这个数据强一致“利器”,DBA们轻松修复数据对加班“say no”
    开源一周岁,MindSpore新特性巨量来袭
    90后就敢当扫地僧!不服?4月24号来闯龙门阵!
    你的数仓函数结果不稳定,可能是属性指定错了
    云小课 | 不了解EIP带宽计费规则?看这里!
    腾讯 angel 3.0:高效处理模型
    深度树匹配模型(TDM)
    X-Deep Learning功能模块
    XLearning
  • 原文地址:https://www.cnblogs.com/loubin/p/11233659.html
Copyright © 2020-2023  润新知