分配从 csv 导入的变量

Assign variables imported from csv

我有一个 .csv 文件,它有 3 列,看起来像这样。

-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 列中的数字分配给变量数组 'x',将第 2 列分配给 'y',将第 3 列分配给 'z'。这样我就可以绘制 3D 图形。到目前为止,我的初始代码如下,

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 文件中的数据分配给这些变量数组。

reader 中的每个 row 都会为您提供这些值的列表。在那个 for 循环中,您可以编写 (x, y, z) = row,然后绘制您的新点。

如果您需要 x 来保存所有 x 等的列表,您可以只追加,例如Xs.append(x)在循环中,其中Xs提前初始化为空列表

尝试使用 numpy。

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

你可以这样做,

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

这将在操作后关闭文件。

尝试使用我的图书馆pyexcel

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