zoukankan      html  css  js  c++  java
  • Numpy初步

    1,获取矩阵行列数

    Import numpyasnp

    #创建二维的naaray对象

    a=np.array([[1,2,3,4,5],[6,7,8,9,10]])

    print(a.shape)   #返回一个形状,是一个tuple

    print(a.shape[0])#获得行数,试想如果是多维的呢,所以你就会明白为什么是[0]

    print(a.shape[1])   #获得列数

    2,矩阵的截取

    importnumpyasnp

    #创建二维的naaray对象

    a=np.array([[1,2,3,4,5],[6,7,8,9,10]])

    print(a[0:1])#这里不是很懂,看下面

    print(a[1,2:4])#返回[89],返回第二行2-3个数

    print(a[1,2:5])#返回[8910]证明了取第二行的2-4个数

    3,按条件截取

    importnumpyasnp

    #创建二维的naaray对象

    a=np.array([[1,2,3,4,5],[6,7,8,9,10]])

    b=a[a>6]#截取矩阵a中大于6的元素,范围的是一维数组

    print(b)

    print(a>6)#其实布尔语句首先生成一个布尔矩阵,将布尔矩阵传入[](方括号)实现截取

    4,满足一定条件的元素变成特定的值

    importnumpyasnp

    #创建二维的naaray对象

    a=np.array([[1,2,3,4,5],[6,7,8,9,10]])

    print(a)

    #大于6清零后矩阵为

    a[a>6]=0

    print(a)

    结果分别为:

    [[12345]

    [678910]]

    [[12345]

    [60000]]

    5,矩阵合并

    importnumpyasnp

    a1=np.array([[1,2],[3,4]])

    a2=np.array([[5,6],[7,8]])

    print(np.hstack([a1,a2]))#Horizontal

    print(a1)#所以知道为什么是1256,2478了

    print(np.vstack((a1,a2)))#vertical

    np.concatenate((a1,a2),axis=0)#等价于np.vstack((a1,a2))

    np.conca

    6,通过函数创建矩阵

    numpy自带创建narray对象的函数,可以方便的创建常用的有规律的矩阵

    importnumpyasnp

    a=np.arange(10)#默认从0开始到10(不包括10),步长为1

    print(a)#返回[0123456789]

    a1=np.arange(5,10)#从5开始到10(不包括10),步长为1

    print(a1)#返回[56789]

    a2=np.arange(5,20,2)#从5开始到20(不包括20),步长为2

    print(a2)#返回[5791113151719]

    7,linspace

    创建指定数量等间隔的序列,实际生成一个等差数列

    importnumpyasnp

    a=np.linspace(0,10,7)#生成首位是0,末位是10,含7个数的等差数列

    print(a)

    8,logspace

    logspace用于生成等比数列。 

    importnumpyasnp

    a=np.logspace(0,10,7)#生成首位是10**0,末位是10**4,含5个数的等比数列

    print(a)

    9,ones,zeros,eye,empty

    ones创建全1矩阵 

    zeros创建全0矩阵 

    eye创建单位矩阵 

    empty创建空矩阵(实际有值)

    importnumpyasnp

    one=np.ones((3,4))#创建3*4的全1矩阵

    print(one)

    zero=np.zeros((3,4))#创建3*4的全0矩阵

    print(zero)

    eye=np.eye(5)#创建5阶单位矩阵

    print(eye)

    empty=np.empty((3,4))#创建3*4的空矩阵(实际有值)

    print(empty)

    10,fromstring ——获得字符ASCII码

    fromstring()方法可以将字符串转化成ndarray对象,需要将字符串数字化时这个方法比较有用,可以获得字符串的ascii码序列,转成相应字符的阿斯卡码。

    importnumpyasnp

    a="abcdef"

    b=np.fromstring(a,dtype=np.int8)#因为一个字符为8位,所以指定dtype为np.int8

    print(b)#返回[979899100101102]

    11,fromfunction

    fromfunction()方法可以根据矩阵的行号列号生成矩阵的元素。 

    例如创建一个矩阵,矩阵中的每个元素都为行号和列号的和。

    importnumpyasnp

    deffunc(i,j):

    returni+j     #这里也可以是别的,比如再加一个9

    a=np.fromfunction(func,(5,6))

    #函数定义就是如此,第一个参数为指定函数,第二个参数为列表list或元组tuple,说明矩阵的大小

    print(a)

    12,常用矩阵函数

    同样地,numpy中也定义了许多函数,使用这些函数可以将函数作用于矩阵中的每个元素。 

    表格中默认导入了numpy模块,即 import numpy asnp

    a为ndarray对象。

    np.sin(a) 对矩阵a中每个元素取正弦,sin(x)

    np.cos(a) 对矩阵a中每个元素取余弦,cos(x)

    np.tan(a) 对矩阵a中每个元素取正切,tan(x)

    np.arcsin(a)对矩阵a中每个元素取反正弦,arcsin(x)

    np.arccos(a)对矩阵a中每个元素取反余弦,arccos(x)

    np.arctan(a)对矩阵a中每个元素取反正切,arctan(x)

    np.exp(a) 对矩阵a中每个元素取指数函数,ex

    np.sqrt(a) 对矩阵a中每个元素开根号√x

    importnumpyasnp

    a=np.array([[1,2,3],[4,5,6]])

    print(np.sin(a))

    #结果

    [[0.841470980.909297430.14112001]

    [-0.7568025-0.95892427-0.2794155]]

    print(np.arcsin(a))

    #结果

    #RuntimeWarning:invalidvalueencounteredinarcsin

    print(np.arcsin(a))

    [[1.57079633nannan]   #nan是not a number 的意思

    [nannannan]]

    13,矩阵乘法(点乘)

    条件:第一个矩阵的列数等于第二个矩阵的行数,函数为dot

    importnumpyasnp

    a1=np.array([[1,2,3],[4,5,6]])

    a2=np.array([[1,2],[3,4],[5,6]])

    ifa1.shape[1]==a2.shape[0]:#列数等于行数的话

    print(a1.dot(a2))

    14,矩阵的转置

    transpose函数

    importnumpyasnp

    a=np.array([[1,2,3],[4,5,6]])

    print(a.transpose())

    15,矩阵的逆

    求矩阵的逆需要先导入numpy.linalg,用linalg的inv函数来求逆。 

    矩阵求逆的条件是矩阵的行数和列数相同。

    importnumpyasnp

    importnumpy.linalgaslg

    a=np.array([[1,2,3],[4,5,6],[7,8,9]])

    print(lg.inv(a))

    #结果

    [[-4.50359963e+159.00719925e+15-4.50359963e+15]

    [9.00719925e+15-1.80143985e+169.00719925e+15]

    [-4.50359963e+159.00719925e+15-4.50359963e+15]]

    a=np.eye(3)#3阶单位矩阵

    print(lg.inv(a))#单位矩阵的逆为他本身

    #结果

    [[1.0.0.]

    [0.1.0.]

    [0.0.1.]]

    16,矩阵信息获取(如平均值)

    获得矩阵中元素最大最小值的函数分别是max和min,可以获得整个矩阵、行或列的最大最小值。

    importnumpyasnp

    a=np.array([[1,3,9],[1,5,6]])

    print(a.max())

    print(a.min())

    print(a.max(axis=0))#[456]axis=0行方向最大(小)值,即获得每列的最大(小)值

    print(a.min(axis=1))#[14]axis=1列方向最大(小)值

    #要想获得最大最小值元素所在的位置,可以通过argmax函数来获得

    print(a.argmax(axis=1))

    17,平均值mean()

    获得矩阵中元素的平均值可以通过函数mean()。同样地,可以获得整个矩阵、行或列的平均值

    importnumpyasnp

    a=np.array([[1,2,3],[4,5,6]])

    print(a.mean())#结果为:3.5

    #同样地,可以通过关键字axis参数指定沿哪个方向获取平均值

    print(a.mean(axis=0))#结果[2.53.54.5]

    print(a.mean(axis=1))#结果[2.5.]

    18,方差var()

    importnumpyasnp

    a=np.array([[1,2,3],[4,5,6]])

    print(a.var())

    print(a.var(axis=0))

    print(a.var(axis=1))

    19,标准差std()

    importnumpyasnp

    a=np.array([[1,2,3],[4,5,6]])

    print(a.std())

    print(a.std(axis=0))

    print(a.std(axis=1))

    20,中值median()

    调用方法是numpy.median(x,[axis]),axis可指定轴方向,默认为axis=none,对所有数取中值

    importnumpyasnp

    x=np.array([[1,2,3],[4,5,6]])

    print(np.median(x))#对所有数取中值

    print(np.median(x,axis=0))#沿第一维方向取中值

    print(np.median(x,axis=1))#沿第二维方向取中值

    21,求和sum()

    importnumpyasnp

    a=np.array([[1,2,3],[4,5,6]])

    print(a.sum())#对整个矩阵求和

    print(a.sum(axis=0))#对行方向求和

    print(a.sum(axis=1))#对列方向求和

    22,累积和cussum()

    某位置累积和指的是该位置之前(包括该位置)所有元素的和。

    例如序列[1,2,3,4,5],其累计和为[1,3,6,10,15],即第一个元素为1,第二个元素为1+2=3,……,第五个元素为1+2+3+4+5=15。

    矩阵求累积和的函数是cumsum(),可以对行,列,或整个矩阵求累积和。

    importnumpyasnp

    a=np.array([[1,2,3],[4,5,6]])

    print(a.cumsum())#对整个矩阵求累积和

    print(a.cumsum(axis=0))#对行方向求累积和

  • 相关阅读:
    函数声明与函数指针
    【LeetCode】三角形最小路径和
    【LeetCode】字符串中的第一个唯一字符
    【LeetCode】基本计算器II
    【LeetCode】二叉树的最小深度
    【LeetCode】加油站
    java中json与对象的转换
    idea2017 无法使用maven3.6.3版本导入依赖
    springboot项目注册为windows系统服务并设置开机自启
    springmvc上传文件
  • 原文地址:https://www.cnblogs.com/two-peanuts/p/puppet.html
Copyright © 2011-2022 走看看