#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 Да, это так, спасибо, спасибо за помощь!