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]]
  • 相关阅读:
    Web API 强势入门指南
    毫秒必争,前端网页性能最佳实践
    Windbg Extension NetExt 使用指南 【3】 ---- 挖掘你想要的数据 Managed Heap
    Windbg Extension NetExt 使用指南 【2】 ---- NetExt 的基本命令介绍
    Windbg Extension NetExt 使用指南 【1】 ---- NetExt 介绍
    WCF : 修复 Security settings for this service require Windows Authentication but it is not enabled for the IIS application that hosts this service 问题
    透过WinDBG的视角看String
    Microsoft Azure Web Sites应用与实践【4】—— Microsoft Azure网站的“后门”
    企业IT管理员IE11升级指南【17】—— F12 开发者工具
    WCF : 如何将NetTcpBinding寄宿在IIS7上
  • 原文地址:https://www.cnblogs.com/BookMiki/p/10329602.html
Copyright © 2011-2022 走看看