zoukankan      html  css  js  c++  java
  • python 《numpy》

    import numpy as np

    创建一个矩阵

    array = np.array([[1, 2, 3],
                      [3, 2, 1]])
    print(array)
    # [[1 2 3]
    #  [3 2 1]]
    print('array dim:', array.ndim)  # 显示几维

    shape 矩阵的形状

    print('shape:', array.shape)  # 显示几行几列

    设置元素的类型

    a = np.array([1, 2, 3], dtype=np.float)
    print(a.dtype)
    # float64

    有时候我们会生成矩阵

    # ####### 生成全部为0的矩阵 #########
    zero = np.zeros((3, 4), dtype=int)
    print(zero)
    # [[0 0 0 0]
    #  [0 0 0 0]
    #  [0 0 0 0]]
    # ########生成全部为1的矩阵 ###############
    ones = np.ones((3, 5))
    print(ones)
    
    # [[1. 1. 1. 1. 1.]
    #  [1. 1. 1. 1. 1.]
    #  [1. 1. 1. 1. 1.]]
    # ######### reshape #####################
    _range = np.arange(20).reshape((5, 4))
    print(_range)
    #[[ 0  1  2  3]
    # [ 4  5  6  7]
    # [ 8  9 10 11]
    # [12 13 14 15]
    # [16 17 18 19]]
    # ########### 线段 ###################
    linplace = np.linspace(0, 10, 6)
    print(linplace)

    线段矩阵,表示从0到10的闭区间也就是11个数,取6个数出来

    2.矩阵的分隔

    import numpy as np
    
    a = np.array([[0, 1, 2],
                 [2, 3, 4]])
    b = np.arange(0, 6).reshape([3, 2])
    
    print(a)
    print(b)
    
    
    print(a > 3)  # 每个元素都判断一边是不是满足条件不满足返回false,满足返回trueprint(a+b)  # 加法减法都一样print(a*b)  # 乘法 对应位置相乘print('########################')print(np.sin(a))  # sin cos tan都可以(每个位置分别sin ...)print(np.dot(a, b))  # 矩阵相乘 ()# 还有一种表达方式为 a.dot(b)
    
    
    x = np.random.random([2, 4])  # 随机生成一个在0到1之间的x
    print(x)
    print(x.sum(axis=0))  # 全部元素的和  axis等于0在每一列寻找 等于1在每一行中寻找
    print(x.max())  # 最大值
    print(x.min())  # 最小值
    
    print(np.argmin(a))  # 返回最小值的索引
    print(a.argmax())  # 返回最大值的索引
    print(np.average(a))  # 这样也可以返回平均值 但是这个不能a.median()
    print(a.mean())  # 返回平均值 当然 np.argmean()也可以
    print(np.median(a))  # 中位数 这个不能 a.median()
    print(np.cumsum(a))  # 元素个数相同,每个元素是之前的累加
    print(np.diff(a))  # 两个元素之间的差
    print(np.nonzero(a))  # 返回两个数列分别表示行,列
    print(np.sort(a))  # 排序
    print(np.transpose(a))  # 转置
    print(a.T)  # 转置
    print(np.clip(a, 5, 9))  # 所有小于五的数都设置为5 大于9的数变为9

    3.矩阵的索引

    # 什么a[0] a[0][1] for row in a 的我就不讲了,反正也会
    # 其实a[0][1] 也可以表示为a[0, 1]
    
    for row in a:
        print(row)   # 打印行
    
    for column in a.T:
        print(column)  # 打印列
    
    # 最后依然说一些关于迭代输出的问题:  
    A = np.arange(3, 15).reshape((3, 4))
    
    print(A.flatten())
    # array([3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14])
    
    for item in A.flat:
        print(item)

    4.矩阵的分割 

    import numpy as np
    
    A = np.arange(12).reshape((3, 4))
    
    X = np.split(A, 3, axis=0)  # 横这分割
    x = np.vsplit(A, 3)  # 横这分割
    Y = np.split(A, 4, axis=1)  # 列着分割
    y = np.hsplit(A, 4)  # 列着分割
    print(type(A))
    # <class 'numpy.ndarray'>
    print(X)
    # [array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8,  9, 10, 11]])]
    print(type(X))
    # <class 'list'>
    
    
    Z = np.array_split(A, 5, axis=1)  # 不对等分割
    print(A)
    # [[ 0  1  2  3]
    #  [ 4  5  6  7]
    #  [ 8  9 10 11]]
    print(Z)
    # [array([[0],
    #        [4],
    #        [8]]), array([[1],
    #        [5],
    #        [9]]), array([[ 2],
    #        [ 6],
    #        [10]]), array([[ 3],
    #        [ 7],
    #        [11]]), array([], shape=(3, 0), dtype=int32)]

    5.矩阵的合并

    import numpy as np
    A = np.array([1, 2, 3])
    print(A.shape) # 此时A不是矩阵属性,只是一个列表属性
    # (3,)
    print(A.T)      # 所以转置无效
    # [1 2 3]
    # 需要变为矩阵在来转置
    # ######### 把a变成矩阵
    print(A[np.newaxis, :].shape)
    # (1, 3)
    B = np.array([5, 6, 7])
    C = np.vstack((A, B))  # 上下合并
    D = np.hstack((A, B))  # 左右合并
    print(C)
    # [[1 2 3]
    #  [5 6 7]]
    print(D)
    # [1 2 3 5 6 7]
    print(C.T)
    # [[1 5]
    #  [2 6]
    #  [3 7]]
  • 相关阅读:
    HDU 1165 Eddy's research II (推公式)
    HDU 1394 Minimum Inversion Number (线段树&&暴力)
    HDU 2845 Beans (最大不连续子序列和)
    CodeForces 369A Valera and Plates( 水)
    HDU 1241 Oil Deposits(dfs)
    hdu 1016 Prime Ring Problem(dfs)
    hdu 5138 CET-6 test(水)
    ZOJ 3693 Happy Great BG(卡精度)
    HDU 1028 Ignatius and the Princess III(dp 母函数)
    CodeForces 432B Football Kit(水)
  • 原文地址:https://www.cnblogs.com/BookMiki/p/10329602.html
Copyright © 2011-2022 走看看