Numpy удаляет измерение из массива np

У меня есть некоторые изображения, с которыми я хочу работать, проблема в том, что есть два вида изображений: 106 х 106 пикселей, некоторые - в цвете, а некоторые черно-белые.

один с двумя (2) измерениями:

(106106)

и один с тремя (3)

(106,106,3)

Есть ли способ, которым я могу удалить последнее измерение?

Я пробовал np.delete, но он, похоже, не работал.

np.shape(np.delete(Xtrain[0], [2] , 2))
Out[67]: (106, 106, 2)

Ответ 1

Вы можете использовать нотацию среза:

x = np.zeros( (106, 106, 3) )
result = x[:, :, 0]
print result.shape

печать

(106, 106)

Форма (106, 106, 3) означает, что у вас есть 3 набора предметов, имеющих форму (106, 106). Поэтому для того, чтобы "вырезать" последнее измерение, вам просто нужно выбрать один из них (это то, что делает нотация среза).

Вы можете сохранить любой фрагмент, который вы хотите. Я произвольно решил оставить 0-й, поскольку вы не указали, что хотите. Итак, result = x[:, :, 1] и result = x[:, :, 2] также даст желаемую форму: все это зависит только от того, какой фрагмент вам нужно сохранить.

Ответ 2

Просто возьмите среднее значение по размеру цветов (axis=2):

Xtrain_monochrome = Xtrain.mean(axis=2)