Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/306.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
numpy和csv读取器出现Python内存错误_Python_Arrays_Csv_Numpy - Fatal编程技术网

numpy和csv读取器出现Python内存错误

numpy和csv读取器出现Python内存错误,python,arrays,csv,numpy,Python,Arrays,Csv,Numpy,我正在阅读两个大的csv文件,每个文件有315000行和300列。我本来希望在使用python时阅读所有这些内容,但现在遇到大约50000行的内存问题。我有大约4GB的RAM,每个csv文件都是1.5G。我本来打算试试亚马逊的网络服务,但如果有人对阅读文件的优化技术有什么建议,我很想省钱 此处前2/314000行的示例数据: 我在Python(xy)Spyder控制台中遇到以下错误: for row in getstuff(filename): (line 97) for row in get

我正在阅读两个大的csv文件,每个文件有315000行和300列。我本来希望在使用python时阅读所有这些内容,但现在遇到大约50000行的内存问题。我有大约4GB的RAM,每个csv文件都是1.5G。我本来打算试试亚马逊的网络服务,但如果有人对阅读文件的优化技术有什么建议,我很想省钱

此处前2/314000行的示例数据:

我在Python(xy)Spyder控制台中遇到以下错误:

for row in getstuff(filename): (line 97)
for row in getdata("test.csv"): (line 89)
MemoryError
我还尝试按照评论建议执行以下操作,但仍然收到一个内存错误:

for row in getdata("train.csv"):                        
   data.append(row[0::])

np.array(data)
代码如下:

import csv
from xlrd import open_workbook 
from xlutils.copy import copy 
import numpy as np
import time
from sklearn.ensemble import RandomForestClassifier
from numpy import savetxt
from sklearn.feature_extraction import DictVectorizer
from xlwt import *


t0=time.clock()
data=[]
data1=[]

count=0
print "Initializing..."

def getstuff(filename):
  with open(filename, "rb") as csvfile:
    datareader = csv.reader(csvfile)
    count = 0
    for row in datareader:
        if count<100000:
            yield row
            count += 1
        elif count > 100000:
            return
        else:
            return

def getdata(filename):
  for row in getstuff(filename):
    yield row


for row in getdata("train.csv"):
   np.array(data.append(row[0::]))


for row in getdata("test.csv"): 
   np.array(data1.append(row[0::]))


target = np.array([x[1] for x in data],dtype=object)
train = np.array([x[2:] for x in data],dtype=object)    
test = np.array([x[1:] for x in data1],dtype=object)    
导入csv
从xlrd导入打开的\u工作簿
从xlutils.copy导入复制
将numpy作为np导入
导入时间
从sklearn.employ导入随机林分类器
从numpy导入savetxt
从sklearn.feature\u提取导入DictVectorizer
从xlwt导入*
t0=时间。时钟()
数据=[]
数据1=[]
计数=0
打印“正在初始化…”
def getstuff(文件名):
打开(文件名为“rb”)作为csvfile时:
datareader=csv.reader(csvfile)
计数=0
对于datareader中的行:
如果计算100000:
返回
其他:
返回
def getdata(文件名):
对于getstuff中的行(文件名):
产量行
对于getdata中的行(“train.csv”):
数组(data.append(行[0::]))
对于getdata中的行(“test.csv”):
数组(data1.append(行[0::]))
target=np.array([x[1]表示数据中的x],dtype=object)
train=np.array([x[2:]表示数据中的x],dtype=object)
test=np.array([x[1:]表示数据1中的x],dtype=object)

您不使用
numpy.genfromtxt
读取csv的任何原因?通过编写
np.array(data.append())
,它可能不会将
数据
转换为
np.array
。也许您可以尝试在循环外转换
数据
一次。Rumbalski先生,谢谢您的回复。我最初尝试了genfromtxt,遇到了类似的问题,但将再次尝试。seb,我尝试在for循环之外转换为np.array(数据),并再次收到内存错误。您的数据是数字吗?