Как вернуть пустой массив numpy как np.ndarray ([[[]]]) - PullRequest
0 голосов
/ 09 июля 2020

У меня есть программа, которая извлекает изображение и возвращает изображение RGB как 3D np.ndarray. Я хочу вернуть np.ndarray([[[]]]), когда изображение недоступно.

Можем ли мы это сделать?

Ответы [ 3 ]

2 голосов
/ 09 июля 2020

Используйте numpy.empty

Что возвращает новый массив заданной формы и типа без инициализации записей.

import numpy as np
empty_array = np.empty((1, 1, 1))
empty_array
array([[[5.e-324]]])

OR

import numpy as np
empty_array = np.empty((1, 1, 0))
empty_array
array([], shape=(1, 1, 0), dtype=float64)

, что в основном

np.array([[[]]])

DOCS для получения дополнительной помощи

0 голосов
/ 09 июля 2020

Такой массив легко сделать:

In [128]: arr = np.array([[[]]])                                                                     
In [129]: arr                                                                                        
Out[129]: array([], shape=(1, 1, 0), dtype=float64)

Вы также можете использовать np.zeros((1,1,0)) (или empty); но это не проще, чем [128].

Но как вы собираетесь использовать или тестировать это? Я полагаю, вы могли бы проверить:

In [130]: arr.nbytes                                                                                 
Out[130]: 0

Я считаю, что один из пакетов изображений (cv2?) Возвращает None, если он не может загрузить изображение. Тестирование на None простое, надежное и широко используется в python.

In [131]: arr = None                                                                                 
In [132]: arr is None                                                                                
Out[132]: True

Это может сделать больше отправленных для использования «изображения» с размером 0, но по-прежнему полными 3 цветными каналами, np.zeros((0,0,3), np.int8).

0 голосов
/ 09 июля 2020

просто возвращает np.empty((10,10,10),object), потому что x=np.empty((10,10,10)) возвращает массив со случайными значениями, уже сохраненными в буфере памяти. x=np.empty((10,10,10),object) вернет массив с none значениями.

Здесь (10,10,10) измерение только для примера. Используйте удобные для вас размеры.

...