Как добавить измерение в массиве NumPy? (125, 125) - (125, 125, 1) - PullRequest
0 голосов
/ 14 января 2019

Я загружаю изображение, используя Python OpenCV в качестве изображения в оттенках серого, из-за которого форма изображения равна (125, 125). Но мне нужно, чтобы форма была (125, 125, 1), где 1 обозначает количество каналов (1, поскольку это шкала серого).

img = cv2.imread('/path/to/image.png', 0)
print(img.shape)
# prints (125, 125)

Теперь мне нужно преобразовать форму img в (125, 125, 1)

Ответы [ 3 ]

0 голосов
/ 14 января 2019
import numpy as np
a = np.random.rand(5,5)
b = a.reshape(5,5,1) 
b = a.reshape(1,5,5)
b = a.reshape(1,5,5,1)

любая форма, которую вы хотите

0 голосов
/ 14 января 2019

Самый простой способ - использовать индексирование numpy и np.newaxis:

img = np.ones((125, 125)) # img.shape: (125, 125)
img_3d = img[..., np.newaxis] # img_3d.shape: (125, 125, 1)

Это особенно удобно, если вам нужны только дополнительные измерения для передачи данных в другую функцию, поэтому вы можете просто передать необычно индексированный массив.

0 голосов
/ 14 января 2019

Попробуйте np.expand_dims:

In [1]: import numpy as np

In [2]: img = np.ones((125, 125))

In [3]: img.shape
Out[3]: (125, 125)

In [4]: img = np.expand_dims(img, axis=-1)

In [5]: img.shape
Out[5]: (125, 125, 1)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...