高效将大列数二维Numpy矩阵转换为Vaex DataFrame的方法
高效将大列数二维Numpy数组转换为Vaex DataFrame
要直接将二维Numpy数组的每一列映射为Vaex DataFrame的独立列,且避免通过Pandas中转的低效问题,你可以通过**构造列字典并配合vaex.from_arrays或vaex.from_dict**实现,这是最直接高效的方式。
核心原因
你之前使用vaex.from_arrays(x=2d_numpy_matrix)得到单列数组的原因是:该函数会把传入的整个二维数组当作单一列的元素值,而非自动拆分列。必须明确将每一列单独传入。
高效实现代码
import vaex import numpy as np # 模拟你的大列数二维Numpy数组(示例为100行、10万列) large_2d_array = np.random.rand(100, 100000) # 构造列字典:键为列名(可自定义,这里用列索引作为名称),值为对应列的Numpy数组 columns = {str(col_idx): large_2d_array[:, col_idx] for col_idx in range(large_2d_array.shape[1])} # 方式一:用vaex.from_arrays解包字典 vaex_df = vaex.from_arrays(**columns) # 方式二:直接用vaex.from_dict(效果一致) # vaex_df = vaex.from_dict(columns)
为什么这比转Pandas高效?
通过Pandas中转时,Pandas会为10万列创建完整的DataFrame结构,这本身就会带来巨大的内存占用和CPU开销;而直接用Vaex的原生函数,无需中间转换环节,直接基于Numpy数组构建Vaex的懒加载列结构,内存和CPU效率都远高于前者。
内容的提问来源于stack exchange,提问作者Dave Liu
相关产品推荐
相关产品推荐

