切片2D NumPy数组的横截面

时间:2016-09-25 22:14:58

标签: python arrays numpy indices

我正在打印一个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)数据集。

2 个答案:

答案 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')

您可以传递dtypedelimiternames等参数(保留标题的布尔值)。

答案 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])