python - 使用 numpy 将 csv 加载到二维矩阵中以进行绘图

标签 python arrays csv numpy reshape

鉴于此 CSV 文件:

"A","B","C","D","E","F","timestamp"
611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291111964948E12
611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291113113366E12
611.88243,9089.5601,5133.0,864.07514,1715.37476,765.22777,1.291120650486E12

我只是想将它加载为具有 3 行和 7 列的矩阵/ndarray。但是,出于某种原因,我能从 numpy 中得到的只是一个 3 行(每行一个)且没有列的 ndarray。

r = np.genfromtxt(fname,delimiter=',',dtype=None, names=True)
print r
print r.shape

[ (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291111964948.0)
 (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291113113366.0)
 (611.88243, 9089.5601000000006, 5133.0, 864.07514000000003, 1715.3747599999999, 765.22776999999996, 1291120650486.0)]
(3,)

我可以手动迭代并将其修改为我想要的形状,但这似乎很愚蠢。我只想将它加载为一个合适的矩阵,这样我就可以在不同的维度上对其进行切片并绘制它,就像在 matlab 中一样。

最佳答案

纯 numpy

numpy.loadtxt(open("test.csv", "rb"), delimiter=",", skiprows=1)

查看 loadtxt文档。

你也可以使用 python 的 csv 模块:

import csv
import numpy
reader = csv.reader(open("test.csv", "rb"), delimiter=",")
x = list(reader)
result = numpy.array(x).astype("float")

您必须将其转换为您喜欢的数字类型。我想你可以在一行中写下整个内容:

result = numpy.array(list(csv.reader(open("test.csv", "rb"), delimiter=","))).astype("float")

添加提示:

您还可以使用 pandas.io.parsers.read_csv 并获取关联的 numpy 数组,这样可以更快。

关于python - 使用 numpy 将 csv 加载到二维矩阵中以进行绘图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4315506/

相关文章:

python - 为什么scrapy会重复抓取一个结果?

python - 如何根据列拆分 numpy 数组?

python - 数组操作 | Hackerrank 运行时错误问题

php将sqlite表导出到csv

Excel 2007 刷新从 Web 导入的 CSV 文件

python,通过坐标从DAS获取序列

python - Pandas - 按整个 MultiIndex 分组

如果客户端停止(SIGSTOP),Python TCP 服务器将永远阻止发送给客户端

javascript - 如何在javascript中获取json数组中的重复对象

python - 程序卡在 Tensorflow 1.6 中的 Estimator.evaluate 上