关于将输入数组从一种形状广播到另一种形状的正确方式

时间:2016-11-18 22:17:42

标签: python numpy scipy scikit-learn scikit-image

有一个功能,我在调用此函数时收到以下消息

该函数用于调整给定图像集的大小,并将转换后的图像集放入新集imgs_p中。

例如,输入imgs的形状为(5635,1,420,580)。我想转换它(5635,64,80,1)。这就是我所做的如下,但是我收到了错误消息ValueError: could not broadcast input array from shape (80,64) into shape (80,1) 如何解决这个问题呢?感谢。

def preprocess(imgs):
    imgs_p = np.ndarray((imgs.shape[0],img_rows, img_cols,imgs.shape[1]), dtype=np.uint8)
    print('imgs_p: ',imgs_p.shape)
for i in range(imgs.shape[0]):
    print('imgs[i,0]: ',imgs[i,0].shape)
    imgs_p[i,0]=resize(imgs[i,0],(img_rows,img_cols))
return imgs_p

1 个答案:

答案 0 :(得分:0)

我认为您想要将“1”维度滚动到正确的位置:

z = np.moveaxis(z, 1, -1).shape

然后你可以在每个图像上运行for循环并重新整形,使用skimage或scipy.ndimage。

小心下采样!您可能希望首先应用高斯模糊以确保考虑所有数据。