有效地将 numpy 矩阵转换为 Vaex DataFrame

Efficiently convert numpy matrix to Vaex DataFrame

提问人:Dave Liu 提问时间:3/10/2023 最后编辑:Dave Liu 更新时间:9/1/2023 访问量:163

问:

我正在尝试将我的宽(100K+ 列)2D numpy 数据转换为 Vaex Dataframe。我正在阅读文档,看到两个相关功能:

from_items

from_arrays

但两者都给了我一整列,其中每一行都是一个numpy数组。我所期望的是 Vaex 能够智能地识别出我希望 numpy 数组中的每一列数据都是 Vaex DataFrame 中自己的独立列。x

vaex.from_arrays(x=2d_numpy_matrix)给我:

x
---
0 np.array(1,2,3)
1 np.array(4,5,6)

当我想要的时候:

0 | 1 | 2 (Column header)
---
1 | 2 | 3
4 | 5 | 6

我的解决方法是,但这令人尴尬地慢。有没有一种更节省 CPU 时间的方法来做到这一点?vaex.from_pandas(pd.DataFrame(2d_numpy_matrix))

数组 pandas numpy python-3.10 vaex

评论


答:

1赞 Rupert 8/2/2023 #1

您可以像这样解压缩字典推导:

import numpy as np
import vaex

headers = np.array(['1','2','3'])
data = np.array([[1,4],[2,5],[3,6]])

df = vaex.from_arrays(**{header: column for header, column in zip(headers, data)})

这将产生:

>>> df
#    0    1    2
0    1    2    3
1    4    5    6

评论

0赞 Dave Liu 8/22/2023
与海量数据相比,这样做的时间效率如何?from_pandas
2赞 Rupert 8/25/2023
我在 4 mil 行、50+ 列数据集上运行了一个测试。from_pandas 创建 Vaex DataFrame 需要 ~0.15 秒,而上述方法需要 ~0.05 秒。