• 【python】numpy创建特殊数组


    简介

    所有创建数组的函数中,都有一个可选参数dtype,表示创建的数组的数据类型

    指定维度empty, eye, identity, ones, zeros, full
    模仿维度empty_like, ones_like, zeros_like, full_like
    特殊矩阵diag, diagflat, tri, tril, triu, vander

    生成指定维度的数组

    其中,empty生成一个指定维度的空数组。

    eyeidentity都是生成对角为1,其他元素为0的矩阵,区别在于,identity只能生成单位矩阵,即方阵;而eye则可以生成行列数不同的矩阵。例如

    >>> np.eye(2,3)
    array([[1., 0., 0.],
           [0., 1., 0.]])
    >>> np.identity(2)  # 只有一个输入
    array([[1., 0.],
           [0., 1.]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    ones, zerosfull生成所有元素都相同的数组,顾名思义oneszeros分别是全1和全0的数组,而full则可以指定其fill_value,例如

    >>> np.ones(3)
    array([1., 1., 1.])
    >>> np.zeros([2,3]) #生成全0数组
    array([[0., 0., 0.],
           [0., 0., 0.]])
    >>> np.full([2,4], 5)   #生成元素均为5的数组
    array([[5, 5, 5, 5],
           [5, 5, 5, 5]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    模仿某个数组的维度生成数组

    _like为后缀的函数,表示生成一个和输入数组维度相同的数组,以ones为例,np.ones_like(x)等价于np.ones(x.shape)

    >>> x = np.full([2,4],5)
    >>> y = np.full_like(x, 6)
    >>> print(x,y)
    [[5 5 5 5]
     [5 5 5 5]] [[6 6 6 6]
     [6 6 6 6]]
    >>> print(y)
    [[6 6 6 6]
     [6 6 6 6]]
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    创建特殊矩阵

    diagflat用于生成对角矩阵,diagdiagflat基础上,添加了提取对角元素的功能,例如

    >>> np.diagflat([1,2,3])
    array([[1, 0, 0],
           [0, 2, 0],
           [0, 0, 3]])
    >>> np.diag([1,2,3])
    array([[1, 0, 0],
           [0, 2, 0],
           [0, 0, 3]])
    >>> np.diag(np.ones([3,3])) #提取对角元素
    array([1., 1., 1.])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    tri(M,N,k)用于生成M行N列的三角阵,其元素为0或者1,k用于调节01的分界线相对于对角线的位置,例如

    >>> np.tri(3,5,1)
    array([[1., 1., 0., 0., 0.],
           [1., 1., 1., 0., 0.],
           [1., 1., 1., 1., 0.]])
    >>> np.tri(3,5,2)
    array([[1., 1., 1., 0., 0.],
           [1., 1., 1., 1., 0.],
           [1., 1., 1., 1., 1.]])
    >>> np.tri(3,5,3)
    array([[1., 1., 1., 1., 0.],
           [1., 1., 1., 1., 1.],
           [1., 1., 1., 1., 1.]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    tril, triu可用于提取出矩阵的左下和右上的三角阵,其输入参数除了待提取矩阵之外,另一个参数与tri中的k相同。

    x = np.arange(12).reshape(4,3)
    >>> np.tril(x,-1)
    array([[ 0,  0,  0],
           [ 3,  0,  0],
           [ 6,  7,  0],
           [ 9, 10, 11]])
    >>> np.triu(x,-1)
    array([[ 0,  1,  2],
           [ 3,  4,  5],
           [ 0,  7,  8],
           [ 0,  0, 11]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    范德蒙德矩阵

    范德蒙德矩阵可表示为

    [ 1 α 1 α 1 2 ⋯ α 1 n 1 α 2 α 2 2 ⋯ α 2 n ⋮ ⋮ ⋮ 2 ⋯ ⋮ n 1 α m α m 2 ⋯ α m n ]

    [1α1α12α1n1α2α22α2n2n1αmαm2αmn]" role="presentation" style="position: relative;">[1α1α12α1n1α2α22α2n2n1αmαm2αmn]
    111α1α2αmα12α222αm2α1nα2nnαmn

    np.vander可通过给定的 α i \alpha_i αi生成范德蒙德矩阵,例如

    x = np.array([1, 2, 3, 5])
    np.vander(x, increasing=True)
    array([[  1,   1,   1,   1],
           [  1,   2,   4,   8],
           [  1,   3,   9,  27],
           [  1,   5,  25, 125]])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
  • 相关阅读:
    ESP32——串口通讯应用实例
    强化自主可控,润开鸿发布基于RISC-V架构的开源鸿蒙终端新品
    8.es更新文档通过版本号实现并发控制
    计算机竞赛 深度学习交通车辆流量分析 - 目标检测与跟踪 - python opencv
    Android App开发超实用实例 | ​Activity
    零时科技 || Earing Farm攻击事件分析
    Transformer Block运算量
    我的驾照考试笔记(2)
    RHCE学习 --- 第四次作业
    超详细配置Marktext的Picgo-Core图片上传到七牛云图床
  • 原文地址:https://blog.csdn.net/m0_37816922/article/details/127828099