如何向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/