使用多个2D图像创建带有循环的3D numpy数组

时间:2018-07-05 15:38:37

标签: numpy

我想从许多样本图像中读取图像,并制作2D numpy数组,其中行“ i”对应于第i个样本,列j对应于图像的第j个像素(12 * 13图像的所有像素均为通过156个数字保存)

import numpy as np
images = np.array([])
for Letter in "ABCDEFGHIJKLMNO":
    im = Image.open("ABCDEFGHIJKLMNO\\16\\"+Letter+".bmp")
    sampleimage = list(im.getdata())
    images = np.append(images,[sampleimage])

但是我在努力制作2D numpy数组。 “图像”数组上方的数组变成由(11,156)插入的(1800,)数组。我尝试了许多不同的方法,但是没有一种方法能正常工作或有效(制作2D python列表然后转换为numpy数组效率不高。尽管即使该解决方案也不起作用)。

所以我的问题是,即时创建2D numpy数组的最佳方法是什么?

1 个答案:

答案 0 :(得分:0)

您正在将numpy数组images视为一个列表。 看看numpy.stack。但是在我的记忆中,最快的方法是将每个图像转换为一个numpy数组,将它们聚合到一个列表中,然后将列表转换为数组。

import numpy as np
images = list()
for Letter in "ABCDEFGHIJKLMNO":
    im = Image.open("ABCDEFGHIJKLMNO\\16\\"+Letter+".bmp")
    sampleimage = np.array(im.getdata())
    images.append(sampleimage)
images_array = np.array(images)

在您的情况下,所得数组的大小应为[1800,11,156][11,156,1800]