【问题标题】:Extract numpy array columns into dictionary将numpy数组列提取到字典中
【发布时间】:2018-10-24 13:02:26
【问题描述】:

我正在手动创建一个特征字典和 numpy 数组。

columns = ['a', 'b', 'c', 'd']
features = {'a': df_train.values[:, 0],
            'b': df_train.values[:, 1],
            'c': df_train.values[:, 2],
            'd': df_train.values[:, 3]}

df_train 是来自 pandas.read_csv() 的 Pandas 数据帧

我正在使用这段代码来简化它:

features = {c: df_train.values[:, i] for i, c in enumerate(columns)}

有没有更 Pythonic 的方式? (例如带有 zip 的字典?)

【问题讨论】:

  • 您在一行中得到了它。恐怕这就像 Pythonic 一样。您可能可以按照您的建议使用不同的方法,但结果将是相同的。您是在暗示一种计算效率更高的方法吗?
  • 不,我认为没有更 Pythonic 的方式。跟进@b-fg 的评论,您不必必然从拥有 1-liner 中获得“pythonic”,但在这种情况下,它完全可读且高效。
  • @b-fg 在 SO 上多花点时间,你会看到一些灾难性的 1-liners :P。这里的 dict 理解很好,但也有一些人存在更广泛的误解,即以可怕的时间复杂度将所有内容都塞进一行会获胜。
  • @roganjosh,是的,明白你来自哪里,呵呵。我们在同一页上;)
  • "dict with zip"?是的,有:dict(zip(columns, df_train.values.T))

标签: python pandas numpy


【解决方案1】:

你可以使用转置:

dict(zip(columns, df_train.values.T))

{k: v for k, v in zip(columns, df_train.values.T)}

【讨论】:

    猜你喜欢
    • 2014-05-18
    • 2017-08-29
    • 2020-08-22
    • 2018-04-25
    • 2021-12-07
    • 2016-03-05
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多