代码之家  ›  专栏  ›  技术社区  ›  amirMD

如何在所有数组的开头和结尾添加零

  •  1
  • amirMD  · 技术社区  · 2 年前

    contact_map = array([[1., 1., 1., ..., 1., 1., 1.],
       [1., 1., 1., ..., 1., 1., 1.],
       [1., 1., 1., ..., 1., 1., 1.],
       ...,
       [0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.],
       [0., 0., 0., ..., 0., 0., 0.]])
    

    每个元素都是这样的:

    contact_map[19] = array([1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 0., 1., 1., 1., 1., 1.,
       1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 1., 0., 1., 0.,
       0., 0., 0., 0., 0., 1., 0., 1., 1., 1., 1., 0., 0., 1., 1., 0., 0.,
       0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 0., 0., 0., 0., 1., 1., 0.,
       1., 1., 0., 0., 0., 1., 1., 0., 1., 0., 0., 0., 1., 1., 1., 1., 1.,
       1., 0., 1., 0., 0., 0., 0., 1., 0., 0., 1., 0., 1., 1., 1.])
    

    len(联系地图)=224

    len(联系地图[19])=100

    我想更改contact_map的所有元素,以便在每个元素的开头和结尾添加“0”,例如将contact_map[19]更改为:

    contact_map[19] = array([0.,1., 1., 1., 1., 1., 1., 1., 1., 0., 1., 1., 0., 1., 1., 1., 1., 1.,
       1., 1., 1., 0., 0., 0., 0., 0., 0., 0., 0., 1., 0., 1., 0., 1., 0.,
       0., 0., 0., 0., 0., 1., 0., 1., 1., 1., 1., 0., 0., 1., 1., 0., 0.,
       0., 0., 0., 0., 0., 0., 1., 1., 1., 1., 0., 0., 0., 0., 1., 1., 0.,
       1., 1., 0., 0., 0., 1., 1., 0., 1., 0., 0., 0., 1., 1., 1., 1., 1.,
       1., 0., 1., 0., 0., 0., 0., 1., 0., 0., 1., 0., 1., 1., 1., 0,.])
    

    len(联系地图[19])=102

    有人能帮我吗?

    1 回复  |  直到 2 年前
        1
  •  0
  •   I'mahdi    2 年前

    你可以用 numpy.pad 如下所示:

    >>> import numpy as np
    >>> a = np.array([[1., 1., 1. , 1., 1., 1.],
                      [1., 1., 0. , 0., 1., 1.], 
                      [0., 1., 0. , 0., 1., 1.]])
    >>> a.shape
    (3, 6)
    
    >>> out = np.pad(a, [(0,0), (1, 1)], 'constant', constant_values=0)  
    # pad first dimension ^^^    ^^^
    #                            ^^^ pad second dimension 
    #                                (first num for set how many pad at first
    #                                 second num for ... at last.)                 
    >>> out.shape
    (3,8)
    
    >>> out
    array([[0., 1., 1., 1., 1., 1., 1., 0.],
           [0., 1., 1., 0., 0., 1., 1., 0.],
           [0., 0., 1., 0., 0., 1., 1., 0.]])
    

    您的意见:

    contact_map = np.random.randint(0,2 , (224, 100))
    print(len(contact_map))
    # 224
    print(len(contact_map[19]))
    # 100
    contact_map = np.pad(contact_map, [(0,0), (1, 1)], 'constant', constant_values=0)
    print(len(contact_map[19]))
    # 102
    print(len(contact_map[0]))
    # 102