无法打开并显示图像文件

时间:2017-05-30 06:29:09

标签: python image pickle

我正在尝试从文件夹中打开一个随机图像并使用matplotlib内联显示它。以下是我做的事情

fileObject = open("notMNIST_small/J.pickle",'rb') 
read_list = pickle.load(fileObject) 
random_image = np.random.choice (read_list)
%matplotlib inline
plt.imshow(random_image)

我收到以下错误。我做错了什么?

ValueError                                Traceback (most recent call last)
<ipython-input-25-a10f05254093> in <module>()
      1 fileObject = open("notMNIST_small/J.pickle",'rb')
      2 read_list = pickle.load(fileObject)
----> 3 random_image = np.random.choice (read_list)
      4 get_ipython().magic(u'matplotlib inline')
      5 plt.imshow(random_image)

  mtrand.pyx in mtrand.RandomState.choice     (numpy/random/mtrand/mtrand.c:15428)()

  ValueError: a must be 1-dimensional

1 个答案:

答案 0 :(得分:0)

numpy's random.choice函数的接口有一个名为size的第二个关键字参数。它指定应从数据数组中抽取多少样本。默认情况下,size设置为None,在这种情况下,只会从数据集中提取一个样本。

为了解决您的问题,请定义变量n并使用random.choice所需的值数量对其进行初始化。

n = 10    # for example
random_image = np.random.choice(read_list, n)

如果您需要改组所有值,我建议改为使用random.shuffle。只需将上述行替换为:

np.random.shuffle(read_list)

请注意random.shuffle没有返回值。它在适当的位置运行,这意味着read_list将被更改。