2015-02-20 2 views
1

У меня есть. CSV-файл, который имеет 3 столбца и выглядит следующим образом.Назначение переменных, импортированных из csv

-10.5,7.79,0 
-10.5,8.37,0 
-10.5,9.52,0 
-10.5,10.10,0 
-10.5,11.25,0 

Я хочу, чтобы назначить номера в 1-й столбец переменной массива «х» и 2-й столбец «у» и 3-го столбца «г». Так что я могу построить трехмерную фигуру. Мой первоначальный код до сих пор следующий:

import csv 
ifile = open('new.csv', "rb") 
reader = csv.reader(ifile) 

for row in reader: 
    writer.writerow(row) 

ifile.close() 

fig = plt.figure() 
axis = fig.gca(projection='3d') 
axis.plot_trisurf(x, y, z) 
plt.show() 

Но я не могу присвоить эти числа в следующих массивах переменных. Так любезно, помогите мне в назначении данных, присутствующих в CSV-файле на этих переменных массивах.

ответ

0

Попробуйте использовать numpy.

import numpy as np 
x, y, z = np.loadtxt('new.csv', delimiter=',', unpack=True) 
0

Каждый row в reader дает вам список этих значений. в этом для цикла вы можете написать (x, y, z) = row, а затем построить свою новую точку.

Если вам нужно x для хранения списка всех x и т. Д., Вы можете просто добавить, например. Xs.append(x) в цикле, где Xs инициализируется в пустой список заранее.

3

Вы можете сделать это так,

import csv 
ifile = open('new.csv', "rb") 
reader = csv.reader(ifile) 
x = [] 
y = [] 
z = [] 
for row in reader: 
    x.append(float(row[0])) 
    y.append(float(row[1])) 
    z.append(float(row[2])) 

ifile.close() 

Или лучше подход будет походить,

with open('new.csv', "r") as ifile: 
    reader = csv.reader(ifile, delimiter=',') 
    for row in reader: 
     x.append(float(row[0])) 
     y.append(float(row[1])) 
     z.append(float(row[2])) 

это будет закрывать файл после операции.

1

Попробуйте использовать мою библиотеку

>>> import pyexcel as pe 
>>> sheet=pe.load("csv-import.csv") 
>>> sheet 
Sheet Name: csv-import.csv 
+---------+--------+---+ 
| -10.500 | 7.790 | 0 | 
+---------+--------+---+ 
| -10.500 | 8.370 | 0 | 
+---------+--------+---+ 
| -10.500 | 9.520 | 0 | 
+---------+--------+---+ 
| -10.500 | 10.100 | 0 | 
+---------+--------+---+ 
| -10.500 | 11.250 | 0 | 
+---------+--------+---+ 
>>> sheet.column.format([0,1], float) 
>>> sheet.column.format(2, int) 
>>> sheet[0,0] 
-10.5 
>>> type(sheet[0,0]) 
<type 'float'> 
>>> x = sheet.column[0] 
>>> y = sheet.column[1] 
>>> z = sheet.column[2] 
>>> x 
[-10.5, -10.5, -10.5, -10.5, -10.5] 
>>> y 
[7.79, 8.37, 9.52, 10.1, 11.25] 
>>> z 
[0, 0, 0, 0, 0] 
+0

не знал об этом модуле. очень хорошо для новичков, как я. – Gonzalo

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