繁体   English   中英

将CSV文件读入python中的n维数组

[英]Read csv file into n dimensional array in python

我有一个实验设计的数据集,该数据集在CSV文件中运行。 它基本上是表格形式的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

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

在熊猫中读取数据后,具体取决于您要处理的数据,而numpy库可能对您来说效果很好。

import numpy as np
import pandas as pd

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

数据变量将包含一个n维numpy数组。 numpy还允许向量化操作,这可能会给您带来很大的速度优势,无论您需要在阵列上执行什么操作。

从帖子的编辑器视图中复制n-粘贴,我可以通过以下方式加载数据:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM