Создать 3D-массив с петлей из нескольких 2D-изображений - PullRequest
0 голосов
/ 05 июля 2018

Я хочу прочитать из множества образцов изображений и создать двумерный массив с нулевыми значениями, чтобы строка «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])

однако я изо всех сил пытался создать двумерный массив. вышеуказанный массив «images» становится массивом (1800,), состоящим из (11,156). Я испробовал много разных способов, но ни один из них не работал должным образом и не работал эффективно (создание списка двухмерных питонов и последующее преобразование в пустой массив неэффективны. Хотя даже это решение не работает).

поэтому мой вопрос: как лучше всего создать двумерный массив на лету?

1 Ответ

0 голосов
/ 05 июля 2018

Вы рассматриваете массив NumPy images как список. Взгляните на numpy.stack . Но в моей памяти самый быстрый способ - преобразовать каждое изображение в массив с кучей, объединить их в список и затем превратить список в массив.

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]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...