【问题标题】:How to read csv file into Python 2d array?如何将 csv 文件读入 Python 2d 数组?
【发布时间】:2015-06-26 13:57:35
【问题描述】:

例如,我有一个 csv 文件,例如:

| a | b | c |
  1   2   3
  4   5   6 
  7   8   9
  10  11  12

我需要从这个 csv 文件创建一个 numpy.ndarray。对于这个例子,它的大小应该是 (2,3)。

应该是这样的

5(1+4), 7(2+5), 9(3+6)
17, 19, 21

对自己的行求和(每2行)

可以使用 Panda、numpy 或类似的库。实际上我正在用熊猫读取 csv,但之后我就不能这样做了。

如有任何帮助,我们将不胜感激。

【问题讨论】:

  • 我不明白输入 csv 文件和“并且应该是这样”格式之间的模式?也许我遗漏了一些东西,但我没有看到对应的内容。
  • 比如我读取的是csv文件。我必须对它自己的每 2 行求和。现在是不是更清楚了。而且我也编辑了我的问题,也许现在它更容易理解了

标签: python arrays csv numpy pandas


【解决方案1】:

如果你使用pandas,你可以使用groupby

>>> df
    a   b   c
0   1   2   3
1   4   5   6
2   7   8   9
3  10  11  12
>>> df.groupby(np.arange(len(df))//2).sum()
    a   b   c
0   5   7   9
1  17  19  21

这是可行的,因为groupby 可以对您传递的内容进行分组,而不仅仅是列名,在这种情况下,我们传递了一个具有正确组号的数组:

>>> np.arange(len(df))
array([0, 1, 2, 3])
>>> np.arange(len(df))//2
array([0, 0, 1, 1])

如果您确实需要 ndarray 而不是数据框,您可以通过 .values 访问它。

>>> df.groupby(np.arange(len(df))//2).sum().values
array([[ 5,  7,  9],
       [17, 19, 21]], dtype=int64)

【讨论】:

  • 实际上我会在 scikit 线性回归和 OLS 上使用它,所以我会检查数据框是否有效,但无论如何谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-16
  • 2020-05-19
  • 1970-01-01
  • 2019-08-24
  • 1970-01-01
  • 2015-11-10
相关资源
最近更新 更多