【问题标题】:How to load csv file to matrix python如何将csv文件加载到矩阵python
【发布时间】:2017-02-16 06:00:05
【问题描述】:

我有一个名为 TEMP2.csv 的 .CSV 文件,其中包含以下内容:

1376460059,4,33.29,33.23,33.23,33.29,33.23,33.29,33.29,33.29,33.33,33.29,33.33,33.29,33.33,33.33,33.37,33.33,33.33,33.33,33.33,33.37,33.37,33.37,33.37

这就是我阅读文件的方式:

import csv
import numpy as np

data = np.genfromtxt('TEMP2.csv',delimiter=',', skip_header=2)

跳过第一个两个数字后,我需要将接下来的 4 个数字添加到矩阵的第一行。下一个 4 到同一矩阵中的第二行,依此类推。

但是这不起作用,我对python真的很陌生,已经尝试了几天,但我仍然没有得到结果。我会非常感谢你的帮助。谢谢。

【问题讨论】:

标签: python arrays csv matrix


【解决方案1】:

也许你需要reshape。如果它无法重塑,则在数组末尾添加零。

COLUMN_NUM = 4
data = np.genfromtxt('a.csv', delimiter=',')[2:]

if data.shape[0] % 4 == 0:
    print data.reshape((-1, 4))
else:
    data = np.pad(data, (0, COLUMN_NUM - len(data) % COLUMN_NUM), 'constant')
    print data.reshape((-1, COLUMN_NUM))

新的形状应该和原来的形状兼容。所以它reshape成功,你会得到这样的结果:

[[ 33.29  33.23  33.23  33.29]
 [ 33.23  33.29  33.29  33.29]
 [ 33.33  33.29  33.33  33.29]
 [ 33.33  33.33  33.37  33.33]
 [ 33.33  33.33  33.33  33.37]
 [ 33.37  33.37  33.37  33.11]]

希望这会有所帮助。

【讨论】:

  • 这对我很有帮助@McGrady。你现在能不能帮帮我:第一个数字是 Unix 时间戳。第二个是生成的剩余数的频率。了解它们的生成时间的最佳方法是什么?
  • 我会的,我也尝试从第一行中获取平均值,但它会给我所有的平均值。
  • @CristianJEstrada 你最好再问一个问题,
  • 我能够做到:对于 x in range(0, len(data)): xtime = ((x*1.)/COLUMN_NUM) + 1376460059 xtime = np.array(xtime) print xtime 你知道如何将我的结果附加到你之前给我看的矩阵吗?
猜你喜欢
  • 2015-10-18
  • 1970-01-01
  • 1970-01-01
  • 2021-09-13
  • 1970-01-01
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多