2016-08-26 3 views
0

У меня есть CVS файл, который имеет три колонки цифр до трех цифр каждый:чтение файла в виде массива

1 0 0 
2 0 0 
3 0 0 
4 0 0 
5 0 0 
6 0 0 
7 0 0 
8 0 0 
9 0 0 
10 0 0 
11 0 0 

Я хочу прочитать столбцы отдельно и быть в состоянии использовать их как массивы с:

data = np.loadtxt('file.csv') 
x = data[:, 0] 
y = data[:, 1] 

Но я получаю:

X = np.array(X, dtype) 
ValueError: setting an array element with a sequence. 

Если вместо этого я использую линию x,y = np.loadtxt('Beamprofile.txt', usecols=(0,1), unpack=True) ошибка исчезает, но x и y, похоже, не читаются правильно при дальнейших операциях.

+2

Возможный дубликат [Прочтите файл csv с python] (http://stackoverflow.com/questions/14725020/read-csv-file-from-python) – gsamaras

+0

Это числовое значение read isue. – hpaulj

+0

Показать форму и тип 'data'. Или даже распечатайте несколько строк данных или файла. – hpaulj

ответ

0

С вашего образца:

In [1]: data=np.loadtxt('stack39174768.txt') 
In [2]: data 
Out[2]: 
array([[ 1., 0., 0.], 
     [ 2., 0., 0.], 
     [ 3., 0., 0.], 
     [ 4., 0., 0.], 
     [ 5., 0., 0.], 
     [ 6., 0., 0.], 
     [ 7., 0., 0.], 
     [ 8., 0., 0.], 
     [ 9., 0., 0.], 
     [ 10., 0., 0.], 
     [ 11., 0., 0.]]) 
In [3]: x=data[:,0] 
In [4]: y=data[:,1] 
In [5]: x 
Out[5]: array([ 1., 2., 3., 4., 5., 6., 7., 8., 9., 10., 11.]) 
In [6]: y 
Out[6]: array([ 0., 0., 0., 0., 0., 0., 0., 0., 0., 0., 0.]) 

Где проблема? Есть ли что-то в файле, который мы не видим в клипе?

In [8]: x,y = np.loadtxt('stack39174768.txt', usecols=(0,1), unpack=True) 

производит то же самое x и y.

Я спросил о форме и DTYPE

In [11]: data.shape 
Out[11]: (11, 3) 
In [12]: data.dtype 
Out[12]: dtype('float64') 

Мне нравится np.genfromtxt немного лучше, но в данном случае это приводит к тому же data.

0

Простейшим решением для этого может быть использование модуля pandas в python, он дает свободу использовать значения столбцов в виде массива numpy, который вы можете легко преобразовать в список.

import pandas as pd 

    df = pd.read_csv(open("name_of_the_csv.csv")) 
    # For one column, lets say the 1st one 
    column_1_list = df[df.columns[0]].values 

Если вы хотите получить доступ все столбцы, которые можно использовать для петли и сделать это, как показано ниже:

df = pd.read_csv(open("name_of_the_csv.csv")) 
    for i in xrange(len(df.columns)): 
     column_list = df[df.columns[i]].values 
+0

Для такого файла 'numpy' является просто способным и простым, как' pandas'. – hpaulj

Смежные вопросы