【发布时间】:2014-03-07 04:19:45
【问题描述】:
我运行以下代码:
traindata = trainData.read_csv('train.tsv', delimiter = '\t')
调用这个函数:
def read_csv(self, filename, delimiter = ',', quotechar = '"'):
# open the file
reader = csv.reader(open(filename, 'rb'), delimiter = delimiter, quotechar = quotechar)
# read first line and extract its data
self.column_headings = np.array(next(reader))
# read subsequent lines
rows = []
for row in reader:
rows.append(row)
self.data = np.array(rows)
self.m, self.n = self.data.shape
这样我就可以打电话了
m, n = traindata.data.shape
print m, n, traindata.column_headings
不幸的是,在我调用 read_csv 函数时,我得到了错误:
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-74-1cc5776f9a9c> in <module>()
13 print "loading data.."
14
---> 15 traindata = trainData.read_csv('test.tsv', delimiter = '\t')
16
C:\pc in read_csv(self, filename, delimiter, quotechar)
17 for row in reader:
18 rows.append(row)
---> 19 self.data = np.array(rows)
20 self.m, self.n = self.data.shape
21
ValueError: array is too big.
如何解决此问题并允许代码运行?
编辑:数据是一个 .tsv 文件,extract here.
【问题讨论】:
-
您的文件有多大?
rows的len是什么?如果数据太大而无法一次性完成,您可能需要拆分数据或使用 pytables 或 pandas 之类的东西。您的数据绝对看起来可以放入某种数据库中。 -
@jozzas 21MB,7395 行,每行 27 列。我认为 numpy 会处理这些更大的值?
-
numpy 可以加载您的数据提取,还是仅在完整文件上失败?
-
@jozzas 它只会在完整文件上失败,但我看不到任何解决方法:(
-
尝试在您的数组调用中使用
dtype=object:self.data = np.array(rows, dtype=object)。 Numpy 正在尝试创建一些它不需要的非常大的字符串 - 这会将它们保留为引用的 python 对象。
标签: python arrays python-2.7 csv numpy