我需要从文件夹中读取图像文件(28 * 28)并将它们堆叠在一起以制作单个数组进行分析。添加2d数组以在python中制作3d
我有以下代码:
for fname in os.listdir(dirname):
im = Image.open(os.path.join(dirname, fname))
imarray = np.array(im)
final = np.stack((final,imarray), axis = 0)
是得到以下错误: ValueError异常:所有输入数组必须具有相同的形状
imarray是(28,28)和i具有60K的图像该文件夹中,所以我想使大小的阵列(60000,28,28)
感谢您的帮助 NK
将这些图像添加到列表中(在循环中)并将该列表作为输入(不在循环中)调用vstack。这对于性能尤为重要。或者,如果您先验知道有多少imgs即将到来。它们的形状:构建一个空的3d数组并将其添加到此数组(更好的方法)。 – sascha
我试过这个在os.listdir(dirname)中的fname: im = Image.open(os.path.join(dirname,fname)) imarray = np.array(im) fin = np.empty((60000 ,28,28)) fin = np.vstack((fin,imarray))并得到错误“所有输入数组必须具有相同的维数” – user6658936
我描述了两种不同的方法,不要混合它们。另外:这是不可读的。那么...... hpaulj的答案涵盖了第一种方法。如果他的解决方案不起作用,你对形状的假设(28,28)可能是错误的。 – sascha