файл .npz содержит разные типы данных, как построить изображения, содержащиеся в файле .npz?

#python #arrays #numpy #matplotlib #file-io

Вопрос:

в настоящее время я пытаюсь изучить Python в рамках проекта, и мне был предоставлен файл .npz, содержащий в них различные типы данных; Я изучил данные, используя

 cell_data = np.load("C:/Users/cell-data.npz")
 

d = dict(zip(("data:{}".format(k) for k in cell_data), (cell_data[k] for k in cell_data))) print(d)

Что дает мне это в качестве вывода.

Я также запустил cell_data.files , сообщив мне, что файл содержит ['images', 'counts', 'folds', 'compressed', 'allow_pickle']

Как бы я извлек отдельные изображения и построил их? Обычно, если бы это было только одно изображение в файле .npz, я бы использовал plt.imshow(‘thatfile.npz’), но я не уверен, как это сделать, когда в файле .npz несколько файлов разных типов данных.

Я также попробовал следующее:

 images = cell_data["images"]
counts = cell_data["counts"]
folds = cell_data["folds"]
X0 = images[folds == 0]
Y0 = counts[folds == 0]
plt.imshow(images, cmap='gray')
plt.show()
 

Однако это, похоже, не работает, я испытываю ошибку:

 TypeError: Invalid shape (2351, 256, 256, 3) for image data
 

Любая помощь будет признательна, спасибо

Комментарии:

1. An .npz -это zip-архив .npy файлов. load дает объект, подобный диктанту. cell_data['images'] следует загрузить один массив. cell_data['counts'] загружает еще одну. Но именно это вы и делаете с cell_data[k] этим . Я не уверен, в чем проблема.

2. @hpaulj при попытке запустить plt.imshow(cell_data['images'], cmap='gray') plt.show() он возвращает ошибку, так как я думаю, что он пытается отобразить все изображения в массиве изображений, я хотел бы знать, как извлечь отдельные массивы изображений в самом массиве «изображения» и построить их.

3. @hpaulj Я также отредактировал в другой попытке, и код ошибки, который он выдает, не уверен, поможет ли это с моим вопросом?

4. Эта форма выглядит как 2351 изображение, каждое из которых имеет форму (256 256) и 3 цветовых канала. imshow(images[0]) Работает ли это?

5. @hpaulj Да, это так, спасибо, спасибо за помощь!