Copy numpy array into part of another array

后端 未结 2 1989
耶瑟儿~
耶瑟儿~ 2020-12-10 10:34

If I run the following:

import numpy as np
a = np.arange(9)
a = a.reshape((3,3))

I will get this:

a = [[0 1 2]
     [3 4 5]         


        
相关标签:
2条回答
  • 2020-12-10 10:55

    You can specify b[1:4, 1:4] to denote the part:

    >>> import numpy as np
    >>> a = np.arange(9)
    >>> a = a.reshape((3, 3))
    >>> b = np.zeros((5, 5))
    >>> b[1:4, 1:4] = a
    >>> b
    array([[ 0.,  0.,  0.,  0.,  0.],
           [ 0.,  0.,  1.,  2.,  0.],
           [ 0.,  3.,  4.,  5.,  0.],
           [ 0.,  6.,  7.,  8.,  0.],
           [ 0.,  0.,  0.,  0.,  0.]])
    
    >>> b[1:4,1:4] = a + 1  # If you really meant `[1, 2, ..., 9]`
    >>> b
    array([[ 0.,  0.,  0.,  0.,  0.],
           [ 0.,  1.,  2.,  3.,  0.],
           [ 0.,  4.,  5.,  6.,  0.],
           [ 0.,  7.,  8.,  9.,  0.],
           [ 0.,  0.,  0.,  0.,  0.]])
    
    0 讨论(0)
  • 2020-12-10 10:57

    Just as an alternative, should you want a different pad value other than zero, you can use this option

    >>> a = np.arange(9.).reshape(3,3)
    >>> np.pad(a, 1, 'constant', constant_values=0)
    array([[ 0.,  0.,  0.,  0.,  0.],
           [ 0.,  0.,  1.,  2.,  0.],
           [ 0.,  3.,  4.,  5.,  0.],
           [ 0.,  6.,  7.,  8.,  0.],
           [ 0.,  0.,  0.,  0.,  0.]])
    >>> np.pad(a, 1, 'constant', constant_values=5)
    array([[ 5.,  5.,  5.,  5.,  5.],
           [ 5.,  0.,  1.,  2.,  5.],
           [ 5.,  3.,  4.,  5.,  5.],
           [ 5.,  6.,  7.,  8.,  5.],
           [ 5.,  5.,  5.,  5.,  5.]])
    
    0 讨论(0)
提交回复
热议问题