2017-03-10 48 views
2

我有一个数据集来自一个CSV文件中运行的实验设计。它基本上是一个表格形式的n维数组。将csv文件读入python中的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 
+0

你可以给你的数据的一个小例子吗?它是'x1,x2,x3,x4,x5,x6,x7'的csv? – James

+0

听起来像是熊猫的工作,虽然很难说没有数据。您还应该阅读[如何提问](http://stackoverflow.com/help/how-to-ask),因为SO旨在帮助有特定技术问题的程序员,而不是编写代码来订购。 –

+3

至少在'numpy'中使用的7维数组不能表示为2d csv表。给出一个csv的例子,并更清楚地说明你需要做什么。我的猜测是你有一个2d数组,有许多'行'和7'列',而不是7d数组。 – hpaulj

回答

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]) 
0

取决于你想你的熊猫阅读后numpy的库可能很好地帮助你的数据做什么。

import numpy as np 
import pandas as pd 

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

数据变量将包含一个n维numpy数组。此外,numpy允许进行矢量化操作,这可能会为您在阵列上执行任何操作时带来巨大的速度优势。

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')])