【发布时间】:2019-04-05 00:26:29
【问题描述】:
def unpickle(file):
import pickle
with open(file, 'rb') as fo:
dict = pickle.load(fo, encoding='bytes')
return dict
dict1 = unpickle(data_dir1)
dict2 = unpickle(data_dir2)
dict3 = unpickle(data_dir3)
dict4 = unpickle(data_dir4)
dict5 = unpickle(data_dir5)
数据格式(来自 CIFAR-10):
以这种方式加载,每个批处理文件都包含一个包含以下元素的字典:
data -- 一个 10000x3072 的 numpy uint8 数组。数组的每一行存储一个 32x32 彩色图像。前 1024 个条目包含红色通道值,接下来的 1024 个为绿色,最后的 1024 个为蓝色。图像以行优先顺序存储,因此数组的前 32 个条目是图像第一行的红色通道值。
我的目标是将存储在字典中的所有 numpy 数组放在一起,作为一大组 numpy 数组(不覆盖)。
【问题讨论】:
-
“覆盖”是什么意思?更改字典中的数组,还是将数据复制到新的大数组中?
-
我的意思是如果两个值相同,一个不应该替换另一个。我只想将数据复制到一个大数组中
-
np.concatenate加入numpy数组。所以是的,如果尺寸匹配,您可以加入每个字典中的数组。如果你对 numpy 和数组形状有一些基本的了解,这没什么神秘的。但我还是不知道你想要什么。group of numpy arrays是模糊的描述。 “两个值相同”同样含糊不清。 -
np.concatenate 返回错误。 ValueError:无法连接零维数组查看此链接以查看数据的来源:cs.toronto.edu/~kriz/cifar.htm
-
那是因为您试图连接字典,而不是其中包含的数组!