【发布时间】: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))