Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
创建真正大的Python列表_Python_Arrays_List_Numpy_Crash - Fatal编程技术网

创建真正大的Python列表

创建真正大的Python列表,python,arrays,list,numpy,crash,Python,Arrays,List,Numpy,Crash,我正在尝试创建与cPickle兼容的图像数据库。初始列表为空。目录中每个图像的数据将作为新行添加到列表中。图像为224x224。图像的大小平均为8KB。加载大约10000张图像后,我的电脑挂起。没有鼠标移动。什么也没发生。需要重新启动。下面是执行此操作的代码段 cr=csv.reader(open(csv_file,"rb")) for row in cr: print row[0], row[1] try: image=Imag

我正在尝试创建与cPickle兼容的图像数据库。初始列表为空。目录中每个图像的数据将作为新行添加到列表中。图像为224x224。图像的大小平均为8KB。加载大约10000张图像后,我的电脑挂起。没有鼠标移动。什么也没发生。需要重新启动。下面是执行此操作的代码段

cr=csv.reader(open(csv_file,"rb"))
    for row in cr:
        print row[0], row[1]
        try: 
            image=Image.open(row[0]+'.jpg').convert('LA')
            pixels=[]
            pixels=[f[0] for f in list(image.getdata())]
            #pix=np.array(image)
            dataset.append(pixels)
            #dataset.append(pix)
            labels.append(row[1]) 
            del image

        except: 
            print("image not found")

我试着将图像的大小缩小到28X28,效果很好。但我不想缩小图像的大小。我正在使用python 64位可执行文件。内存是4GB。Ubuntu 14.04。我怀疑这是因为堆栈空间有限,列表占用的堆栈空间超过了可用的空间。如果是这样,我如何创建这个庞大的列表?这个问题有解决办法吗?我的最终目标是创建一个以像素数据作为行的numpy数组。目前我正在将列表转换为numpy数组。。是否有解决此问题的方法???

如果数据最终将是numpy数组,请尝试使用。它的工作原理与“普通”numpy数组类似,区别在于数据实际上是以二进制形式存储在磁盘上的。只有请求的数组块被放入RAM中,这样就可以解决您的问题

如果确定了数据数组的大小,则在创建
memmap
对象时只需设置正确的维度。如果没有,请退房 ,您应该能够以任何方式创建它

哦,还有其他解决方案,如
PyTables


祝你好运

如果数据最终将是numpy数组,可以尝试使用。它的工作原理与“普通”numpy数组类似,区别在于数据实际上是以二进制形式存储在磁盘上的。只有请求的数组块被放入RAM中,这样就可以解决您的问题

如果确定了数据数组的大小,则在创建
memmap
对象时只需设置正确的维度。如果没有,请退房 ,您应该能够以任何方式创建它

哦,还有其他解决方案,如
PyTables


祝你好运

您能否创建一个生成器,为每个图像生成标签和像素的元组。这样您就不必一次在内存中创建所有数据了?我无法复制您的问题,因为我没有安装PIL。但我认为问题在于JPG是一种压缩格式,您正在尝试存储未压缩的格式,每幅图像的大小将远大于8K。我不喜欢像我这样的答案,但一般来说,您应该避免将所有内容都保存在内存中。使用生成器/打开和关闭循环中的文件,而不是一次完成。您始终可以放弃构建自己的数据库格式,使用标准库中的搁置@maxymoo您是说使用其他格式不会导致此问题?我试着只加载这些图像,而不向列表中添加数据。它没有坠毁。。我怀疑这是列表的一个问题。您是否可以创建一个生成器,为每个图像生成标签和像素的元组。这样您就不必一次在内存中创建所有数据了?我无法复制您的问题,因为我没有安装PIL。但我认为问题在于JPG是一种压缩格式,您正在尝试存储未压缩的格式,每幅图像的大小将远大于8K。我不喜欢像我这样的答案,但一般来说,您应该避免将所有内容都保存在内存中。使用生成器/打开和关闭循环中的文件,而不是一次完成。您始终可以放弃构建自己的数据库格式,使用标准库中的搁置@maxymoo您是说使用其他格式不会导致此问题?我试着只加载这些图像,而不向列表中添加数据。它没有坠毁。。我怀疑这是列表的一个问题。您是否可以创建一个生成器,为每个图像生成标签和像素的元组。这样您就不必一次在内存中创建所有数据了?我无法复制您的问题,因为我没有安装PIL。但我认为问题在于JPG是一种压缩格式,您正在尝试存储未压缩的格式,每幅图像的大小将远大于8K。我不喜欢像我这样的答案,但一般来说,您应该避免将所有内容都保存在内存中。使用生成器/打开和关闭循环中的文件,而不是一次完成。您始终可以放弃构建自己的数据库格式,使用标准库中的搁置@maxymoo您是说使用其他格式不会导致此问题?我试着只加载这些图像,而不向列表中添加数据。它没有坠毁。。我怀疑这是列表的问题