我正在尝试从文件夹中打开一个随机图像并使用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
答案 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
将被更改。