numpy

作者: taijielan | 来源:发表于2018-11-30 14:29 被阅读0次

    numpy.array()中的数据格式必须一致

    numpy从txt中读取数据到矩阵中

    numpy.genfromtxt(filename, delimiter = ',',dtype = str)
    numpy.array()

    将列表改为矩阵
    import  numpy as np,os,sys
    #设置一维举证
    p = np.array([1,2,3,4])
    #设置二维矩阵
    p1= np.array([[1,2,3,4],[2,3,5,6],[7,8,9,0]])
    print(p)
    print(p1)
    #获取矩阵信息
    print(p.shape)
    print(p1.shape)
    
    print(help(np.shape))
    
    获取array中的数据类型
    import numpy
    p = numpy.array([1,2,3,4])
    print(p)
    print(p.dtype) #int64
    
    array中使用切片取值
    import numpy
    p  = numpy.array([10,2,3,4,5])
    
    print(p[0:2])
    
    多维数组中的值
    import numpy
    p = numpy.array(
        [
            [1,2,3,4],
            [5,6,7,8],
            [1,2,3,5]
        ]
    )
    #取第1列
    print(p[:,1]) # ":" 代表所有的 值是[2 6 2]
    #取第一行
    print(p[1,:]) #[5 6 7 8]
    #取第2行第三列
    print(p[2,3]) #5
    #取1-2列
    print(p[:,0:2])  #[[1 2][5 6] [1 2]]
    
    根据索引获取矩阵
    import numpy
    #判断1维矩阵中是否存在相同的
    p = numpy.array([1,2,3,4,5,7,10,11])
    s = (p == 10)
    print(s) #[False False False False False False  True False]
    #拿到等于10的值
    print(p[s]) #[10]
    p1  =numpy.array([
        [1,2,3,4,5],
        [2,3,4,5,7],
        [3,4,5,5,6]
    ])
    #获取第5列等于7的索引
    s1 = (p1[:,4] == 7)
    #拿到第5列中的返回
    print(s1) #[False  True False
    #拿到等于7的那一行
    print(p1[s1, :]) #[[2 3 4 5 7]]
    
    
    numpy中的条件表达式
    import  numpy
    #判断是否同时满足条件
    a1 = numpy.array([5,10,15,20])
    equal_five_and_ten = (a1 == 5)&(a1 == 10)
    print(equal_five_and_ten) #[False False False False]
    #判断是否仅满足条件之一
    equal_five_or_ten = (a1 ==5) |(a1 == 10)
    print(equal_five_or_ten)#[ True  True False False]
    #将满足条件的索引的值改为50
    a1[equal_five_or_ten] = 50
    print(a1)#[50 50 15 20]
    
    转换array()中数据的类型
    import  numpy
    vector = numpy.array(["1","2","3"])
    print(vector.dtype) #<U1
    print(vector) #['1' '2' '3']
    #转换数据类型
    vector= vector.astype(float)
    print(vector.dtype) #float64
    print(vector) # [1. 2. 3.]
    
    矩阵的运算
    import numpy
    vector = numpy.array([1,2,3,4,5,12,-1])
    #矩阵中的和
    print(vector.sum()) #15
    #最大值
    print(vector.min()) #-1
    #最小值
    print(vector.max()) #12
    
    numpy中的计算
    
    import numpy
    vector = numpy.array([1,2,3,4,5,12,-1])
    #矩阵中的和
    print(vector.sum()) #15
    #最大值
    print(vector.min()) #-1
    #最小值
    print(vector.max()) #12
    vector  = numpy.array(
        [
            [1,2,3,4],
            [1,2,3,5],
            [1,2,3,6]
        ]
    )
    #表示行相加
    print(vector.sum(axis=1))
    #表示列相加
    print(vector.sum(axis=0))
    
    将向量改为矩阵
    import  numpy
    #设置一个长度维15的向量
    print(numpy.arange(15))
    #将长度15的标亮改为3行5列的矩阵
    vector = numpy.arange(15).reshape(3,5)
    print(vector)
    print(vector.shape)
    
    通过numpy构造向量
    import  numpy
    #设置3行4列的为0 的矩阵
    b = numpy.zeros((3,4))
    vector = numpy.ones((4,5))
    print(vector) #[[1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.][1. 1. 1. 1. 1.]]
    print(b) #[[0. 0. 0. 0.][0. 0. 0. 0.][0. 0. 0. 0.]]
    #设置向量从10-30 每次加5
    vector1 = numpy.arange(10,30,5)
    print(vector1)#[10 15 20 25]
    
    numpy的基本计算
    import  numpy as np
    #随机一个2行3列的从-1到1的举证
    a  = np.random.random((2,3))
    print(a) #[[0.65507723 0.46095135 0.45749613][0.71049155 0.71738481 0.53144442]]
    from numpy import pi
    #引入1到2pi之间的100个平均数
    p =np.linspace(1,2*pi,100)
    print(p)
    
    a1 = np.array([10,20,30,40])
    a2 = np.arange(4)
    a3 = a1-a2
    a4 = a1+a2
    a5= a**2
    
    print(a1) #[10 20 30 40]
    print(a2)#[0 1 2 3]
    print(a3)#[10 19 28 37]
    print(a4)#[10 21 32 43]
    print(a5)#[[6.07811319e-02 7.68443365e-01 4.55558396e-02][1.21376769e-01 4.28695920e-04 9.60006899e-01]]
    print(a1<30)#[ True  True False False]
    
    b1 = np.array([[1,1],[0,1]])
    b2 =np.array([[2,0],[3,4]])
    b3 = b1*b2
    b4 = b1.dot(b2)
    b5 = np.dot(b1,b2)
    print(b1) #[[1 1][0 1]]
    print(b2)#[[2 0][3 4]]
    print(b3)#[[2 0][0 4]]
    print(b4)#[[5 4][3 4]]
    print(b5)#[[5 4] [3 4]]
    
    c1 = np.arange(3)
    print(c1)#[0 1 2]
    #指数函数也就是多少次方
    print(np.exp(c1)) #[1.         2.71828183 7.3890561 ]
    #求平分根
    print(np.sqrt(c1))#[0.         1.         1.41421356]
    
    d1 = np.floor(10*np.random.random((3,4)))
    #创建3行4列的矩阵
    print(d1)  #[[8. 0. 1. 9.][4. 5. 7. 1.][8. 5. 7. 2.]]
    print(d1.ravel())
    d1.shape =(6,2)
    print("============》")
    #创建6行2列的数据
    print(d1)#[[3. 4.][9. 0.][5. 8.][2. 7.][7. 9.][2. 1.]]
    #转制
    print(d1.T)#[[3. 9. 5. 2. 7. 2.][4. 0. 8. 7. 9. 1.]]
    
    print("e===========")
    
    e1 = np.floor(10*np.random.random((2,2)))
    e2 = np.floor(10*np.random.random((2,2)))
    print(e1)#[[0. 6.][9. 0.]]
    print(e2)#[[6. 0.] [9. 5.]]
    #矩阵横着拼接
    print(np.hstack((e1,e2)))#[[0. 6. 6. 0.][9. 0. 9. 5.]]
    #矩阵竖着拼接
    print(np.vstack((e1,e2)))#[[0. 6.][9. 0.][6. 0.] [9. 5.]]
    
    print("f===========")
    f1 = np.floor(10* np.random.random((2,12)))
    print(f1)#[[3. 3. 6. 2. 7. 6. 6. 9. 6. 2. 3. 9.] [4. 7. 8. 4. 4. 4. 1. 1. 8. 6. 2. 9.]]
    #横着平均分为3份,
    print(np.hsplit(f1,3))#[array([[3., 3., 6., 2.],[4., 7., 8., 4.]]), array([[7., 6., 6., 9.],[4., 4., 1., 1.]]), array([[6., 2., 3., 9.],[8., 6., 2., 9.]])]
    #在第3个元素后分割,后面的为另一个元素,最后的为剩下的元素
    print(np.hsplit(f1,(3,4)))#[array([[5., 8., 5.], [8., 5., 0.]]), array([[6.],  [5.]]), array([[8., 7., 2., 0., 7., 7., 8., 9.],    [2., 3., 6., 9., 7., 6., 9., 0.]])]
    
    f2 = np.floor(10*np.random.random((12,2)))
    print(f2)#[[8. 7.][4. 8.][2. 8.] [2. 4.][7. 2.][4. 2.][9. 0.][7. 4.] [1. 1.] [5. 5.][9. 4.][1. 6.]]
    #竖着分为3份
    print(np.vsplit(f2,3))#[array([[8., 7.],  [4., 8.], [2., 8.],  [2., 4.]]), array([[7., 2.],      [4., 2.],  [9., 0.],       [7., 4.]]), array([[1., 1.],       [5., 5.],       [9., 4.],       [1., 6.]])]
    
    
    f3 = np.arange(12)
    #深度赋值
    f4 = f3
    print (f4 is f3)#True
    print((id(f3)))#4571387904
    print((id(f4)))#4571387904
    
    #潜度复制
    f5 = f3.view()
    print(f5 is f3)#False
    f5.shape =(3,4)
    f5[0,0] = 123
    print(f5)##[[123   1   2   3][  4   5   6   7][  8   9  10  11]]
    
    #copy
    f6 = f3.copy()
    print(f6 is f3)#False
    f6.shape  = (3,4)
    f6[0,0] = 111
    print(f6)#[[111   1   2   3][  4   5   6   7][  8   9  10  11]]
    print(id(f6))#4571388064
    print(id(f3))#4571387904
    
    f7 = np.sin(np.arange(12)).reshape(3,4)
    print(f7)#[[ 0.          0.84147098  0.90929743  0.14112001][-0.7568025  -0.95892427 -0.2794155   0.6569866 ] [ 0.98935825  0.41211849 -0.54402111 -0.99999021]]
    #在一列上的最大值的索引
    f8 = f7.argmax(axis = 0)
    print(f8)#[2 0 0 1]
    #在一行上最大值的索引
    f9 = f7.argmax(axis =1)
    print(f9)#[2 3 0]
    
    #拿到最大值 f8是行值 ,range(f7.shape[1]))是列值
    f10 = f7[f8,range(f7.shape[1])]
    print(f10)#[0.98935825 0.84147098 0.90929743 0.6569866 ]
    
    f11 = np.arange(0,40,10)
    print(f11)#[ 0 10 20 30]
    #对数据进行扩展 扩展为2行1列
    print(np.tile(f11,(2,1)))#[[ 0 10 20 30][ 0 10 20 30]]
    
    f12  =np.array([[3,2,5],[2,4,1]])
    #表示对行进行排序
    f13 = np.sort(f12,axis=1)
    print(f13)# [[2 3 5][1 2 4]]
    f14 = np.array([5,4,3,6])
    f15 = np.argsort(f14)
    #求排序的索引
    print(f15)#[2 1 0 3]
    #排序
    print(f14[f15])#[3 4 5 6]
    

    相关文章

      网友评论

          本文标题:numpy

          本文链接:https://www.haomeiwen.com/subject/nazccqtx.html