gpt4 book ai didi

python - 如何使 Pandas 数据框 Fortran 类型有序

转载 作者:行者123 更新时间:2023-12-04 16:30:11 30 4
gpt4 key购买 nike

我知道一点,在 python pandas 包中,数据框有一部分是用 NumPy NDArrays 构建的。并且 numpy 可以选择数据顺序类型,例如“C”或“F”。

由于我总是要在巨大的数据帧(如 1 亿行)上的列上实现大量操作,我希望如果我有机会将数据帧从 c 类型转换为 f 类型,我可以大大提高性能,对吧?

如果是这样,我该怎么做?或者简单地使用 numpy,因为 pandas 数据框不是必须的,实际上是一个快速的答案。

谢谢

最佳答案

有趣的是,Pandas 对每一列都使用了内部 C 顺序 numpy 数组。每当您访问多个列或所有数据框时,它都会连接这些 numpy 数组并返回一个 Fortran 顺序 numpy 数组。

print(df[df.columns[0]].values.flags)
print(df[df.columns[0:2]].values.flags)
print(df.values.flags)

#Single column
C_CONTIGUOUS : True
F_CONTIGUOUS : True

#Multiple columns
C_CONTIGUOUS : False
F_CONTIGUOUS : True

#Entire dataframe
C_CONTIGUOUS : False
F_CONTIGUOUS : True

因此,列操作非常快(添加/编辑/删除等)。这就是为什么在数据帧中迭代行很慢。如果您的程序有更多的行操作,请将其转换为 C 顺序,如下所示。

df = pd.DataFrame(np.ascontiguousarray(df.values), columns=df.columns)

每当我完成按列处理时,我会将其转换为 C 连续数组,因为缩放、批量训练 DNN 在 C 顺序数组中要快得多。

关于python - 如何使 Pandas 数据框 Fortran 类型有序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49420272/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com