numpy将数组宽度调整为零

2024-10-01 02:18:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我是R的典型用户,但在python中我被卡住了

我有很多图像保存为NumPy数组,我需要将数组/图像的pad从不同的宽度调整为4k分辨率,在16202800之间振荡,高度是恒定的:2160

我需要将每个数组/图像的pad调整为3840*2160,即在右侧和左侧添加黑色边框,以便数组/图像本身保持不变

为了调整大小,我尝试了这个方法,但代码在所有边上都添加了黑色边

arr = np.array([[1,1,1],[1,1,1],[1,1,1],[1,1,1]])
FinalWidth = 20 

def pad_with(vector, pad_width, iaxis, kwargs):
    pad_value = kwargs.get('padder', 0)
    vector[:pad_width[0]] = pad_value

arr2 = np.pad(arr,FinalWidth/2,pad_with)

Tags: 用户图像numpyvaluewithnp数组width
1条回答
网友
1楼 · 发布于 2024-10-01 02:18:57

我认为您只需要hstack,假设您希望两边都有一半的宽度:

def pad_with(vector, pad_width):
    temp = np.hstack((np.zeros((vector.shape[0], pad_width//2)), vector))
    return np.hstack((temp, np.zeros((vector.shape[0], pad_width//2))))
arr2 = pad_with(arr,FinalWidth)
arr2 
>>> array([[0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0.],
       [0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 1., 1., 1., 0., 0., 0.,
        0., 0., 0., 0., 0., 0., 0.]])
arr2.shape
>>> (4, 23)

相关问题 更多 >