我正在打印一个numpy数组的横截面。我希望拉出前15行,只从第5个索引列中提取数据。
import csv as csv
import numpy as np
csv_file_object = open('train.csv', 'rU')
header = next(csv_file_object)
data = []
for row in csv_file_object:
data.append(row)
data = np.array(data)
print(data[0:15,5])
当我运行上面的代码时,我收到以下错误:IndexError:数组索引太多。
在不添加列过滤器的情况下运行代码可以按预期工作。 csv文件是12x892(x,y)数据集。
答案 0 :(得分:0)
csv_file_object
是一个文件对象,包含csv文件的所有行而不进行拆分。您必须使用csv
模块正确阅读它们:
with open('train.csv', 'rU') as csv_file_object:
reader = csv.DictReader(csv_file_object)
data = np.array([row.values() for row in reader])
但是既然你想将它们转换为numpy数组,你最好使用genfromtxt
函数:
data = np.genfromtxt('train.csv')
您可以传递dtype
,delimiter
和names
等参数(保留标题的布尔值)。
答案 1 :(得分:0)
更新:我在打开文件
之前没有调用csv.reader()import csv as csv
import numpy as np
csv_file_object = csv.reader(open('train.csv', 'rU'))
header = next(csv_file_object)
data = []
for row in csv_file_object:
data.append(row)
data = np.array(data)
print(data.shape)
print(data[0:15,5])