在python中将csv文件读入n维数组

时间:2017-03-10 01:51:59

标签: python arrays numpy

我在CSV文件中运行了一个Design of Experiments数据集。它基本上是表格形式的n维数组。

CSV文件是多变量计算的输出。目前,数据集是7维,但可能更多。

我试图将这些数据读入python中的n维数组,这样我就可以在n维空间中进行插值。

以下数据相同:

var1,var2,var3,var4,var5,output1,output2,output3
1,1,1,1,1,777,888,999
1,1,1,1,2,777,888,999
1,1,1,1,3,777,888,999
1,1,1,2,1,777,888,999
1,1,1,2,2,777,888,999
1,1,1,2,3,777,888,999
1,1,2,1,1,777,888,999
1,1,2,1,2,777,888,999
1,1,2,1,3,777,888,999
1,1,2,2,1,777,888,999
1,1,2,2,2,777,888,999
1,1,2,2,3,777,888,999
1,2,1,1,1,777,888,999
1,2,1,1,2,777,888,999
1,2,1,1,3,777,888,999
1,2,1,2,1,777,888,999
1,2,1,2,2,777,888,999
1,2,1,2,3,777,888,999
1,2,2,1,1,777,888,999
1,2,2,1,2,777,888,999
1,2,2,1,3,777,888,999
1,2,2,2,1,777,888,999
1,2,2,2,2,777,888,999
1,2,2,2,3,777,888,999
2,1,1,1,1,777,888,999
2,1,1,1,2,777,888,999
2,1,1,1,3,777,888,999
2,1,1,2,1,777,888,999
2,1,1,2,2,777,888,999
2,1,1,2,3,777,888,999
2,1,2,1,1,777,888,999
2,1,2,1,2,777,888,999
2,1,2,1,3,777,888,999
2,1,2,2,1,777,888,999
2,1,2,2,2,777,888,999
2,1,2,2,3,777,888,999
2,2,1,1,1,777,888,999
2,2,1,1,2,777,888,999
2,2,1,1,3,777,888,999
2,2,1,2,1,777,888,999
2,2,1,2,2,777,888,999
2,2,1,2,3,777,888,999
2,2,2,1,1,777,888,999
2,2,2,1,2,777,888,999
2,2,2,1,3,777,888,999
2,2,2,2,1,777,888,999
2,2,2,2,2,777,888,999
2,2,2,2,3,777,888,999

3 个答案:

答案 0 :(得分:0)

看看csv.reader()

那里有一个例子;它会从csv文件中获取您想要的值。您可能希望修改它以将值转换为整数。如下所示:

import csv
data = []
with open('data.csv', 'r') as csvfile:
    reader = csv.reader(csvfile)
    for row in reader:
        data.append([int(val) for val in row])

答案 1 :(得分:0)

根据您在pandas中读取数据后要对数据执行的操作,numpy库可能适合您。

import numpy as np
import pandas as pd

df = pd.read_csv('data.csv')
data = df.values

数据变量将包含n维numpy数组。 numpy还允许向量操作,这可能为您在阵列上执行的任何操作提供大量速度优势。

答案 2 :(得分:0)

从帖子的编辑器视图中复制粘贴,我可以使用以下内容加载数据:

In [10]: data=np.genfromtxt('stack42708781.txt',delimiter=',',dtype=int,skip_header=1)
In [11]: data[:5,:]
Out[11]: 
array([[  1,   1,   1,   1,   1, 777, 888, 999],
       [  1,   1,   1,   1,   2, 777, 888, 999],
       [  1,   1,   1,   1,   3, 777, 888, 999],
       [  1,   1,   1,   2,   1, 777, 888, 999],
       [  1,   1,   1,   2,   2, 777, 888, 999]])
In [12]: data.shape
Out[12]: (48, 8)

In [19]: data=np.genfromtxt('stack42708781.txt',delimiter=',',names=True,dtype=None)
In [20]: data.shape
Out[20]: (48,)
In [21]: data[:5]
Out[21]: 
array([(1, 1, 1, 1, 1, 777, 888, 999), (1, 1, 1, 1, 2, 777, 888, 999),
       (1, 1, 1, 1, 3, 777, 888, 999), (1, 1, 1, 2, 1, 777, 888, 999),
       (1, 1, 1, 2, 2, 777, 888, 999)], 
      dtype=[('var1', '<i4'), ('var2', '<i4'), ('var3', '<i4'), ('var4', '<i4'), ('var5', '<i4'), ('output1', '<i4'), ('output2', '<i4'), ('output3', '<i4')])