Объект 'list' не имеет атрибута 'ndim'

Попробовал узнать разрешение изображений из массива images, используя ndim:

print(images.ndim)

Но выдало ошибку:

AttributeError: 'list' object has no attribute 'ndim'

Пытался найти её в интернете, но там проблема с совершенно другой библиотекой и предлагают использовать np. array() , не отрицаю, что он мог бы помочь, да вот только я даже не знаю, куда именно его записать, пытался

images = np.array([[],[]])

Но из-за этого появлялась другая ошибка:

AttributeError: 'numpy.ndarray' object has no attribute 'append'

Массив images содержит загруженные таким образом изображения:

def load_data(data_directory):
directories = [d for d in os.listdir(data_directory)
               if os.path.isdir(os.path.join(data_directory, d))]
labels = np.array([[],[]])
images = np.array([[],[]])
for d in directories:
    label_directory = os.path.join(data_directory, d)
    file_names = [os.path.join(label_directory, f)
                  for f in os.listdir(label_directory)
                  if f.endswith(".ppm")]
    for f in file_names:
        images.append(skimage.io.imread(f))
        labels.append(int(d))

Как можно исправить? Вопрос направлен к той ошибке, которую можно решить, ну а я, если честно, не знаю, которая из них решаема.


Ответы (1 шт):

Автор решения: Tehnorobot

Вам просто нужно присвоить к images список: images = [] и также с labels. В списках есть метод append, отвечающий за добавление элементов. Если нужно узнать количество измерений с помощью ndim, то вот пример кода:

import numpy as np
 
lst = np.array([1, 2, 3, 4])

lst = np.append(lst, 0)

print(lst)

print(lst.ndim)

Пример реализации вывода разрешения изображений после применения skimage.io.imread():

import numpy as np

lst = np.array([[[235, 230, 234], [233, 228, 232]]]) # изображения 
print(lst[0, :,0:2]) # их разрешение

Но, все же, лучше использовать библиотеку PIL для получения разрешения изображения:

from PIL import Image

(img_width, img_height) = Image.open("имя изображения или путь к нему").size
→ Ссылка