Удаление пустых массивов не работает должным образом - PullRequest
0 голосов
/ 14 декабря 2018

Я пытаюсь удалить все пустые массивы.Как-то это не работает.Может кто-нибудь помочь?Что я делаю неправильно?Спасибо

image_input = pickle.load( open( "images.pkl", "rb" ) )
images = np.empty((500,400,400,3))

for i, image in enumerate(image_input):
    if image.shape == (400,400,3) and i < 500:
        images[i] = image
    elif image.shape != (400,400,3) and i < 500:
        np.delete(images, images[i], axis=0)
        print('else')

Ответы [ 3 ]

0 голосов
/ 14 декабря 2018

Мне пришлось переназначить изображения.Спасибо Nethale!

image_input = pickle.load (open ("images.pkl", "rb")) images = np.zeros ((800 400 400 300))

image_input = pickle.load( open( "images.pkl", "rb" ) )
images = np.zeros((800,400,400,3))

for i, image in enumerate(image_input):
    if image.shape == (400,400,3):
        images[i] = image


for i, image in enumerate(images):
    if (not np.any(image)):
        images = np.delete(images, image, axis=0)
        print('deleted')
0 голосов
/ 14 декабря 2018

Поскольку image_input представляется списком, и вы хотите изменить размер этого списка, вероятно, лучше всего использовать простые списки, а затем сгенерировать массив изображений:

image_input = pickle.load(open("images.pkl", "rb" ))

# Keep only images with right size
image_input = [image for image in image_input if image.shape == (400,400,3)]

# Create image tensor
images = np.array(image_input)

# Limit to first 500 images only
images = images[:500, ...]
0 голосов
/ 14 декабря 2018

Не работает, потому что np.delete не работает inplace.Возвращает копию с удаленными значениями.См. Официальную документацию .

Поэтому замена

np.delete(images, images[i], axis=0)

на

images = np.delete(images, images[i], axis=0)

должна работать.

Вы можетепросто используйте родной Python del вот так:

In[50]: images = np.empty((500,400,400,3))

In[51]: del images

In[52]: images
Traceback (most recent call last):

  File "<ipython-input-53-49a4f536d6a7>", line 1, in <module>
    images

NameError: name 'images' is not defined
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...