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))