Python pickle,numpy-重塑参数?

Python pickle,numpy-重塑参数?,python,numpy,pickle,Python,Numpy,Pickle,我试图找出restrape()函数的参数如下 我没有发现关于pickle有reformate()方法的任何信息,文件中给出了import cPickle as pickle,import numpy as np,因此我假设(可能是错误的假设)reformate函数是因为numpy。我找到了numpy的重塑方法的定义(也在下面)。但是,我无法区分哪些参数属于哪个参数 因为这个东西应该加载到图片数据中,我猜32,32可能是图像大小,并且会对应于newshape参数 我不知道1000,3在做什么:a参

我试图找出
restrape()
函数的参数如下

我没有发现关于pickle有
reformate()
方法的任何信息,文件中给出了
import cPickle as pickle,import numpy as np
,因此我假设(可能是错误的假设)reformate函数是因为numpy。我找到了numpy的重塑方法的定义(也在下面)。但是,我无法区分哪些参数属于哪个参数

因为这个东西应该加载到图片数据中,我猜32,32可能是图像大小,并且会对应于
newshape
参数

我不知道1000,3在做什么:a参数的术语“array_like”令人困惑,而且我不知道如果方法只有3个参数,为什么会给出4个参数,或者python如何知道32,32是一个参数,如果真的是(为什么没有
[]
?)

基本上,每个参数(传入)属于哪个参数?这究竟是怎么说的呢?X是如何从一个pickle加载的对象变成一个有numpy方法的对象的?这可能吗

   datadict = pickle.load(f)
    X = datadict['data']
    Y = datadict['labels']
    X = X.reshape(10000, 3, 32, 32)

这将从文件中加载词典:

datadict = pickle.load(f)
然后从字典中选择两个值。普通字典键索引:

X = datadict['data']
Y = datadict['labels']
显然,
X
是一个
numpy
数组<代码>重塑是一种方法(属于数组的函数)

numpy
数组有一个名为
shape
的属性。在此
重塑
之后,
X.shape
应返回
(10000,3,32,32)
,即四维数组的形状。这些数字是文档中描述的
newshape
参数

本文档适用于
重塑
的功能版本。它将被用作:

X = np.reshape(X, (10000, 3, 32, 32))
相同的功能,只是调用它的方式不同

要从这里继续下去,您可能需要学习
numpy
文档


方法版本的文档为:

a、 重塑(形状,顺序='C')

返回包含具有新形状的相同数据的数组

有关完整文档,请参阅
numpy.重塑


您链接的文档与实际发生的略有不同,这可能解释了您的困惑。实际文档实际上是相同的函数,但设置为对象方法而不是库方法

在这种情况下,(10000,3,32,32)对应于输出阵列的形状。因此,您的输出实际上是一个具有形状(10000、3、32、32)的四维数组。我怀疑,如果这是图像数据,您可能有一个32x32图像,带有RGB值和1000个图像


此外,pickle在存储对象时存储类型信息,因此它知道对象是一个numpy数组

你能澄清一下吗:这段代码是你写的并试图调试的代码,还是你试图理解的代码。。其他人的代码datadict['data']是什么数据类型?如果是numpy数组/矩阵,其大小是多少?只是为了确认整形线是否抛出了错误?@BenJ我不知道,hpaulj说这是一个数组,我哥哥说这是一个numpy.ndarray,基本上说了一些与hpaulj类似的事情,“numpy包上也有整形,但ndarray对象本身也有整形方法”,以及“它看起来就像你可以通过那样的形状…”“谢谢!这与“[…]无论如何,它看起来像是制作了一个包含32x32像素rbg图像的10000张图片列表“我还是想知道,3代表rgb在地球上的什么地方有这样的说法?没有,但你说它是图像数据,计算机科学中代表图像的经典方式是3张量(三维数组),像素位置利用两个维度,第三个维度是红色内容、绿色内容,还有每个像素的蓝色内容。我不明白,原型显示
restrape()
接收一个
shape
参数,所以正确的调用是
restrape((10000,3,32,32))
,为什么
restrape(10000,3,32)
也能工作?我今天整天都在为这个问题苦苦挣扎。你的解释帮我解决了!我很长一段时间都无法理解重塑中的第一个或四个参数意味着什么。再次感谢!
X = np.reshape(X, (10000, 3, 32, 32))