如何向 numpy 数组添加一行和一列。该数组的形状为 (480,639,3),我想要形状为 (481,640,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/