首页 > 解决方案 > 使用两个 numpy 数组创建图像

问题描述

我正在做一个项目,我在一个名为 Prismatic 的程序中进行模拟以获取我以后要使用的文件,Prismatic 以 h5 格式输出文件,我能够使用 Python 从中提取数据,模拟产生一个图像,保存在两个数据集(dim1,dim2)中,每个都是大小为 219 的 numpy 数组,我试图再次从它们创建图像,但我不确定它是如何工作的,我试图堆叠 numpy 数组但我只是在图像中得到一条线,我刚刚了解了 numpy 数组我对它们还不太了解,有人可以帮忙吗?这是我的代码。

fi = h5py.File('ty.h5')
a = fi['4DSTEM_simulation']['data']['realslices']['annular_detector_depth0000']['dim1'][:]
b = fi['4DSTEM_simulation']['data']['realslices']['annular_detector_depth0000']['dim2'][:]
merge_arr = numpy.stack((a, b), axis=0)
data = Image.fromarray(merge_arr)
if data.mode != 'RGB':
    data = data.convert('RGB')

标签: pythonarraysimagenumpy

解决方案


好的,鉴于您的数据集,我设法找到了一张图片。

from matplotlib import pyplot as plt
%matplotlib inline # remove this if you are not using a jupyter notebook
import h5py
# data link https://file.io/riS5juuYLNin

f = h5py.File('ty.h5')

realslice = (f['4DSTEM_simulation']
 ['data']
 ['realslices']
 ['annular_detector_depth0000']
 ['realslice'])[:]

plt.imshow(realslice)
#plt.show() # add this if you are not using a jupyter notebook

在此处输入图像描述

弄清楚这一点的真正工具是查看文件给定级别的键是什么f,例如在f.keys()f['4DSTEM_simulation'].keys()等等,然后通过严格这些键访问的可用对象来查看其中项目的形状。最终我找到了一张图片。我对这些数据一无所知,所以也许还有更多。看来您最初的问题实际上并不需要解决。两个 246x1 阵列绝对不会以独特的方式形成图像。


推荐阅读