如何向numpy数组中添加一行和一列。数组有形状(480639,3),我想有形状(481640,3)。新行和新列应填充零,如下所示:

[43,42,40],         ...        [64,63,61], [0,0,0]
   ...              ...            ...     [0,0,0]
[29,29,29],         ...        [38,37,35], [0,0,0]
[0,0,0], [0,0,0]    ...                    [0,0,0]

要添加新列,我正在执行以下操作:
b = numpy.zeros((480,640,3), dtype = int)
b[:,:-1] = old_arry

但我怎么才能加一行呢?我需要使用一个循环还是存在一个更好的方法?

最佳答案

您可以使用pad

>>> old = np.random.random_integers(0, 100, size=(480, 640))
>>> np.pad(old, pad_width=((0, 1), (0, 1)), mode='constant')
array([[ 66,  22,  51, ...,  18,  15,   0],
       [ 28,  12,  43, ...,   8,  38,   0],
       [ 55,  43,  89, ...,  67,  58,   0],
       ...,
       [ 17,  25, 100, ...,  12,  52,   0],
       [ 97,  59,  82, ...,  38,  97,   0],
       [  0,   0,   0, ...,   0,   0,   0]])
>>> np.pad(old, pad_width=((0, 1), (0, 1)), mode='constant').shape
(481, 641)
>>>

您也可以将其写成np.pad(old, ((0, 1), (0, 1)), mode='constant'),即不使用pad_width关键字。要为填充区域设置不同的值,请参阅文档中的constant_values参数。

关于python - numpy:添加行和列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29344966/

10-12 21:12