如何在不复制的情况下从单个 1D Numpy 数组构建 Pandas DataFrame

2024-06-23

与我能找到的所有其他问题不同,我不想从同构 Numpy 数组创建 DataFrame,也不想将结构化数组转换为 DataFrame。

我想要的是从每列的单独 1D Numpy 数组创建一个 DataFrame。我尝试了显而易见的DataFrame({"col": nparray, "col": nparray}),但这显示在我的个人资料的顶部,所以它一定是在做一些非常慢的事情。

据我了解,Pandas DataFrames 是用纯 Python 实现的,其中每一列都由 Numpy 数组支持,所以我认为有一种有效的方法来做到这一点。

我实际上想做的是从 Cython 有效地填充 DataFrame。 Cython 具有内存视图,可以有效访问 Numpy 数组。 所以我的策略是分配一个 Numpy 数组,用数据填充它,然后将其放入 DataFrame 中。

相反的效果很好,从 Pandas DataFrame 创建内存视图。因此,如果有一种方法可以预先分配整个 DataFrame,然后将列传递给 Cython,这也是可以接受的。

cdef int32_t[:] data_in = df['data_in'].to_numpy(dtype="int32")

我的代码配置文件的一部分如下所示,其中代码所做的一切与最后创建 DataFrame 相比完全相形见绌。

         1100546 function calls (1086282 primitive calls) in 4.345 seconds

   Ordered by: cumulative time

   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
        1    0.000    0.000    4.345    4.345 profile:0(<code object <module> at 0x7f4e693d1c90, file "test.py", line 1>)
    445/1    0.029    0.000    4.344    4.344 :0(exec)
        1    0.006    0.006    4.344    4.344 test.py:1(<module>)
     1000    0.029    0.000    2.678    0.003 :0(run_df)
     1001    0.017    0.000    2.551    0.003 frame.py:378(__init__)
     1001    0.018    0.000    2.522    0.003 construction.py:170(init_dict)

对应代码:

def run_df(self, df):
    cdef int arx_rows = len(df)
    cdef int arx_idx

    cdef int32_t[:] data_in = df['data_in'].to_numpy(dtype="int32")

    data_out_np = np.zeros(arx_rows, dtype="int32")
    cdef int32_t[:] data_out = data_out_np

    for arx_idx in range(arx_rows):
        self.cpp_sec_par.run(data_in[arx_idx],data_out[arx_idx],)

    return pd.DataFrame({
        'data_out': data_out_np,
    })

pandas.DataFrame ({"col": nparray, "col": nparray})

如果你尝试的话这会起作用list (nparray)反而。这是一个通用示例:

import numpy as np
import pandas as pd

alpha = np.array ([1, 2, 3])
beta = np.array ([4, 5, 6])
gamma = np.array ([7, 8, 9])

dikt = {"Alpha" : list (alpha), "Beta" : list (beta), "Gamma":list (gamma)}

data_frame = pd.DataFrame (dikt)
print (data_frame)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在不复制的情况下从单个 1D Numpy 数组构建 Pandas DataFrame 的相关文章

随机推荐

  • 如何删除其他目录中不存在的文件?

    我有两个目录 我们称它们为src and build 我的构建系统可以正常工作 因此对于所有具有更新时间的文件src比在build它从复制文件src to buid并进行一些转换 缩小 版本控制等 否则会跳过 因为文件被认为是最新的 然而
  • 在 python 中将 url 添加到 mysql 行

    我正在尝试使用 python 和 MySQLdb 库将 url 添加到 mysql 中的文本行 但是当我运行代码时 它说我的 sql 语法中有错误 你能告诉我我做错了什么吗 这是我的代码 import MySQLdb as mdb conn
  • 如何在 Safari 中调试嵌入式 JavaScript

    编辑 根据 dmi3y 的建议 更新了标题 将 内联 更改为 嵌入 以更好地反映问题的性质 在 Chrome 中 我通常通过在 JS 文件中设置断点来调试 JS 但是 Chrome 还允许您在存在内联 JS 的情况下使用实际文档执行此操作
  • 在 Windows 上使用 asprintf()

    我编写了一个在Linux上完美运行的C程序 但是当我在Windows上编译它时 它给我一个错误 说asprintf 未定义 它应该是 stdio 库的一部分 但似乎许多编译器不包含它 我可以在 Windows 上使用哪个编译器来使用 asp
  • 如何使用nix构建docker容器?

    我有一个 Nix 包 我想将其捆绑到 docker 容器中 具体来说 我想使用 Nix 作为更具表现力的替代方案Dockerfile拥有更快的 非线性 图像构建 我找到了有关的文档dockerTools buildImage https n
  • .NET 集合是一个结构体

    这是一个有趣的问题 是否有一个集合is net 框架中某处的结构 只是为了澄清 所有现有的集合 列表 数组等 都是引用类型 即使您将泛型参数设置为值类型 但我想知道是否有一种方法可以创建一个实际上是结构的集合 我显然不打算传递它 这会导致大
  • 关闭并打开“wifi和移动网络位置”后活动识别不起作用[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在使用活动识别来检测用户活动 我发现一个奇怪的行为 在我关闭并打开 WiFi 和移动网络位置 后 应用程序没有获得任何活动识别更新
  • 为什么我必须明确告诉 Spark 要缓存什么?

    在 Spark 中 每次我们对 RDD 执行任何操作时 都会重新计算 RDD 因此 如果我们知道 RDD 将被重用 我们应该显式地缓存 RDD 比方说 Spark 决定延迟缓存所有 RDD 并使用 LRU 自动将最相关的 RDD 保留在内存
  • 如何在fortran中调用和使用另一个子程序中的子程序?

    我正在编写一个程序 其中主程序包含许多子例程和函数 为了构造主程序的这些子程序之一 假设是子程序 A 我需要使用另一个子程序 假设是 B 我的问题是 如何调用子程序A并使用子程序B 我是初学者 我已经搜索了很多 但没有找到我清楚理解的东西
  • 为什么框架的自然高度不立即更新?

    我正在编写一个小部件来显示一些文本行 通过Label in a Frame 并且一旦文本高度大于包含内容的高度 就需要调整字体大小Frame 为此 我正在查询 winfo reqheight 为了Label和Frame文本更新后 想法是减少
  • 在 VB.NET 中调用过程的优缺点是什么?

    我想知道在VB NET中使用Call关键字和不使用Call调用程序的优缺点 Private Sub ProOne Code Are Here End Sub Private Sub Calling ProOne I would like t
  • 如何计算django中两个日期之间的差异

    我想计算当前日期和前一个日期之间的天数差异 我正在尝试这段代码 requiremntObj CustomerLeads objects all a datetime datetime now date for i in requiremnt
  • 如何设置 Flutter CameraPreview 大小“全屏”

    我正在使用相机预览来测量物体的高度 但问题是我无法全屏设置相机预览高度 我努力了定位小部件 它充满了屏幕 但图像被拉伸 我努力了变换小部件 但高度没有填满全屏 出现空白 图像没有拉伸 Mycode final size MediaQuery
  • iOS Catalyst Cocoapod 框架错误 - 签名需要开发团队

    我正在更新我的 iOS 应用程序 使其也可以在 Mac 上运行 选择 Mac 复选框后 当我尝试为 Mac 构建时 出现下面屏幕截图中的错误 它告诉我需要为这个 Cocoapod 框架选择一个开发团队 不过 我可以在不选择开发团队的情况下构
  • 基础知识 - Hibernate / JDBC 连接池问题故障排除

    Hibernate 对于从底层连接池获取的数据库连接的责任是什么 它是否在使用连接之前测试连接是否已关闭 如果是的话 从池中获取另一个连接 我在下面包含了错误和确认信息 任何关于我可以从哪里开始解决这个问题的想法都会非常有帮助 以及有关我们
  • 如何查找正在运行的 JVM 附带的 java 代理列表?

    我正在尝试调试添加到生产 JVM 的 Java 代理之一的问题 在应用程序的启动脚本中 Java代理已正确添加 并且已在其他环境中运行 但在生产中 该代理似乎不起作用 有没有办法找到添加的java代理列表 这个问题类似于JVM 可以检索已通
  • Angular2 构建简单表单时没有 ControlContainer 的提供程序

    这是我的表格 应用程序组件 html
  • Caffe:了解 blob 的预期 lmdb 数据结构

    我试图了解数据在 Caffe 中是如何解释的 为此 我查看了Mnist教程 http caffe berkeleyvision org gathered examples mnist html查看输入数据定义 layers name mni
  • Mongoose/Express CastError 出现 2 条完全相同路线中的 1 条?

    我正在尝试模型 find all两条完全相同的快速路线上的集合中的文档 在我的其中一条路线上 这没有问题 所有文件都被退回 然而 在不同的快速路线上exact同样的逻辑 我收到以下错误 Cast to ObjectId failed for
  • 如何在不复制的情况下从单个 1D Numpy 数组构建 Pandas DataFrame

    与我能找到的所有其他问题不同 我不想从同构 Numpy 数组创建 DataFrame 也不想将结构化数组转换为 DataFrame 我想要的是从每列的单独 1D Numpy 数组创建一个 DataFrame 我尝试了显而易见的DataFra