Numpy

作者: 我问你瓜保熟吗 | 来源:发表于2018-08-31 17:08 被阅读21次

    介绍:Numeric Python,它是一个由多维数组对象和用于处理数组的例程集合组成的库。

    import numpy as np
    
    # 定义矩阵
    a = np.array([1,2,3],dtype=np.int)          # 一维矩阵,设置为整数方式存在,也可以:dtype=np.float
    b = np.zeros((3,4),dtype=np.float)
    c = np.ones((3,4),dtype=np.float)
    d = np.arange(12).reshape((3,4))
    e = np.linspace(1,10,8).reshape(2,4)
    
    print(a,'\n',b,'\n',c,'\n',d,'\n',e)
    
    # 矩阵的属性
    array = np.array([[1,2,3],[4,5,6]])         # 二维矩阵/数组
    print(array)
    print('number of dimmension:',array.ndim)   # array.ndim 几维矩阵
    print('shape',array.shape)                  # array.shape 矩阵几行几列
    print('size',array.size)                    # array.size 矩阵几个元素
    
    # 基础运算 1
    
    # 逐个相加减乘除
    a = np.array([10, 20, 30, 40])
    b = np.arange(4)
    print(a, b)
    c1 = a - b
    c2 = a + b
    c3 = a*b
    print(c1, c2, c3)
    
    # 比较运算,返回布尔值列表
    print(b<3)
    print(b==3)
    
    # 矩阵相乘
    aa = np.array([1,1]
                  [0,1])
    bb = np.arange(4).reshape(2,2)
    
    # 逐个相乘
    cc1 = aa*bb
    # 矩阵相乘
    cc3 = np.dot(aa, bb)
    cc4 =aa.dot(b)
    
    
    # 矩阵求和,最值
    d = np.random.rand((2, 4))  # 两行四列的矩阵,值为随机生成的0-1之间
    print(d)
    print(np.sum(a, axis=1))    # axis=0代表行,=1代表列
    print(np.min(a, axis=0))
    print(np.max(a, axis=1))
    print(np.average(d))
    
    # 基础运算 2
    
    # 找出索引
    e = np.arange(2, 14).reshape((3, 4))
    print(e)
    print(np.argmin(e))
    print(np.argmax(e))
    
    # 索引找值
    A = np.arange(3,15).reshape(3,4)
    print(A)
    print(A[2], [1])
    print(A[2, 1])
    print(A[2, :])
    print(A[2, 1:3])
    
    # 迭代每一行
    for row in A:
        print(row)
    
    # 迭代每一列
    for column in A.T:
        print(column)
    
    # 迭代所有
    print(A.flatten())
    
    # flat:迭代索引返回一个迭代器
    for item in A.flat:
        print(item)
    
    # 合并
    
    A = np.array([1, 1, 1])  # 三行
    B = np.array([2, 2, 2])  # 三行
    
    C = np.vstack((A, B))    # 两行三列  vertical stak  上下合并
    print(C)
    print(A.shape, C.shape)
    
    D = np.hstack((A, B))    #
    print(D)
    print(D.shape)
    
    
    # 行变列
    
    A1 = np.array([1, 1, 1])[:, np.newaxis]
    B1 = np.array([2, 2, 2])[:, np.newaxis]
    C1 = np.hstack((A1, B1))
    print(A1.shape, C1.shape)
    
    # 分割
    
    A = np.arange(12).reshape((3, 4))
    print(A)
    
    print(np.split(A, 3, axis=0)) # 分成几块,横向还是竖向分
    print(np.vsplit(A, 3))        # 横向分割三块,同上
    print(np.split(A, 4, axis=1))
    print(np.hsplit(A, 2))        # 竖向分割两块,同上
    
    print(np.array_split(A, 3, axis=1)) # 不平均分割,一个两列,两个一列
    
    # 浅复制 & 深复制
    
    a = np.arange(4)
    b = a
    c = a
    
    print(a)
    c[1] = 88     # 修改c之后,a也会跟着改变,这就是浅复制,理解为链接复制
    print(a)
    
    d = a.copy()  #加.copy()是深复制,更改d不会同时改变a
    d[3] = 33
    print(a, d)
    
    

    相关文章

      网友评论

          本文标题:Numpy

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