且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

将 numpy 数组复制到另一个数组的一部分

更新时间:2022-10-14 20:07:25

您可以指定b[1:4, 1:4]来表示部分:

>>>将 numpy 导入为 np>>>a = np.arange(9)>>>a = a.reshape((3, 3))>>>b = np.zeros((5, 5))>>>b[1:4, 1:4] = a>>>乙数组([[ 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 # 如果你的意思是`[1, 2, ..., 9]`>>>乙数组([[ 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.]])

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]
     [6 7 8]]

If I create a larger array like this:

b = np.zeros((5,5))
b = [[ 0.  0.  0.  0.  0.]
     [ 0.  0.  0.  0.  0.]
     [ 0.  0.  0.  0.  0.]
     [ 0.  0.  0.  0.  0.]
     [ 0.  0.  0.  0.  0.]]

How do I efficiently copy a into b to get an array like this?

# border of 0 surrounding a to be filled in with other data later
b = [[ 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.]]

I am looking for a function built into numpy if it exists.

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.]])