将 Numpy 数组复制到内存视图

2024-02-09

我有一个memoryview on a numpy数组并想复制另一个数组的内容numpy使用此数组将其放入其中memoryview:

import numpy as np
cimport numpy as np

cdef double[:,::1] test = np.array([[0,1],[2,3]], dtype=np.double)

test[...] = np.array([[4,5],[6,7]], dtype=np.double)

但为什么这是不可能的呢?它让我不断诉说

TypeError:只有长度为 1 的数组可以转换为 Python 标量 块引用

如果我从 a 复制,效果很好memoryview to a memoryview,或从numpy数组到一个numpy数组,但如何从数组中复制numpy数组到一个memoryview?


这些作业有效:

cdef double[:,::1] test2d = np.array([[0,1],[2,3],[4,5]], dtype=np.double)
cdef double[:,::1] temp = np.array([[4,5],[6,7]], dtype=np.double)
test2d[...] = 4
test2d[:,1] = np.array([5],dtype=np.double)
test2d[1:,:] = temp
print np.asarray(test2d)

显示

[[ 4.  5.]
 [ 4.  5.]
 [ 6.  7.]]

我已在以下位置添加了答案https://stackoverflow.com/a/30418422/901925 https://stackoverflow.com/a/30418422/901925在缩进上下文中使用这种内存视图“缓冲区”方法。

cpdef int testfunc1c(np.ndarray[np.float_t, ndim=2] A,
                    double [:,:] BView) except -1:
    cdef double[:,:] CView
    if np.isnan(A).any():
        return -1
    else:
        CView = la.inv(A)
        BView[...] = CView
        return 1

它不执行其他发布者想要的无复制缓冲区分配,但它仍然是有效的内存视图复制。

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

将 Numpy 数组复制到内存视图 的相关文章

随机推荐

  • 如何调用或重新启动MathJax?

    我需要 MathJax 重新检查我的所有页面 我的意思是 当页面创建后 一切都很棒 但我需要在 window onload 之后调用它来重新解析页面 因为其内容同时发生了变化 我该怎么做这样的事呢 See http docs mathjax
  • Spring依赖注入:注入接口的所有实例

    如果可能的话 如何使用实现特定接口的所有其他 Spring bean 集合来配置 Spring bean 示例 我想连接CarFactory带有实现以下功能的 bean 列表的 beanCarManufacturer界面 Inject pr
  • 如何从 SwiftUI 中的函数返回按钮?

    我需要根据一些参数动态创建一个按钮 func buildButton parameter Parameter gt Button switch parameter case Parameter Value1 return Button ac
  • Bootstrap 4 轮播不起作用?

    我有以下 BS4 轮播代码 使用本教程制作的 但是代码不起作用 显示了第一张图像 但我不知道出于什么原因轮播不受控制 并且在任何情况下都不会转到下一张图像 可能的解决方案是什么 div class container div class r
  • nm 输出中的“_GLOBAL__sub_I_”是什么意思?

    当我尝试解决静态链接中的问题时 我遇到了一些问题 GLOBAL sub I 符号名称前面的前缀 尽管我使用过 但它以这种形式出现nm demangle C 我偶然发现了这个答案 如何找到全局静态初始化 https stackoverflow
  • Docker 名称解析暂时失败 [Errno -3]

    我正在关注码头工人教程 https docs docker com get started part2 我必须使用以下方法构建应用程序 docker build t friendlyhello 它到达第 4 步 暂停后我收到此错误 Step
  • Node.js 中 require 的正确方法是什么?

    我刚刚开始使用 Node js 和 Electron 并且在文档和示例代码中都看到了有关如何请求模块的各种方法 具体来说 我正在尝试遵循this https medium com developers writing building a
  • 如何获取 ASP.NET MVC 中 HttpResponse 的引用?

    我正在调用一个第三方库 它需要System Web HttpResponse 我看到我有一个HttpResponseBase 但不是HttpResponse就像网络表单一样 有没有办法获得HttpResponse Using MVC 3 E
  • 为什么 Manifest 被弃用了?什么时候应该使用 ClassTag,什么时候应该使用 TypeTag

    我有几个问题Manifest and TypeTag 据我了解 JVM 不了解泛型并删除类型 所以我不能这样做 def factoryForAll T new T will not compile Runtime doesn t know
  • 如何按多个 T.attributes 对 List 进行排序?

    假设我有一个歌曲列表 Song public string Name public int PlayOrder 0 现在我想首先按播放顺序对它们进行排序 从零开始 然后按名称字母顺序对它们进行排序 因此 排序结果的示例集将是 名称 播放顺序
  • 多个应用程序窗口激活无法正常工作

    我有一个 Delphi 应用程序 它以文档浏览器作为主窗体 当用户打开文档时 我们打开一个编辑器窗口 我们希望每个编辑器的任务栏以及主窗体上都有一个按钮 我已经应用了普通代码来执行此操作 如下 但是当我在使用编辑器窗口后单击主窗体时 编辑器
  • 如何获取 Rails 表单或 field_for 块内的底层对象?

    我无法弄清楚如何获取 form for 或 field for 块中的底层对象 我想做的是这样的 和 children 是一个多态 has many 关联 建议 这不就是
  • 带 lambda 表达式的起订量?

    我正在尝试使用 Moq 4 0 10827 在 NuGet 上 测试应用程序服务 并且需要查询存储库 public class MyService Repository
  • Python - excel:写入多个单元格需要时间

    我正在使用 win32com client 将数据写入 Excel 文件 这花费了太多时间 下面的代码模拟了我想要更新 Excel 的数据量 大约需要 2 秒 有没有一种方法可以在一次调用中更新多个单元格 具有不同的值 而不是一个一个地填充
  • 以编程方式向 Gradle 添加风味

    我有一个 Android 项目 目前正在其中构建 20 种风格 并且可能会构建超过 100 种 每种风格唯一改变的是一些资源文件 可绘制对象和字符串 我想使用 gradle 遍历 src 中的每个文件夹 并根据该风味的目录名称创建包名称为
  • 如何注册我自己的 Firefox 扩展?

    我正在尝试学习如何编写 Firefox 扩展 我从下载了一个 HelloWorld 示例here http kb mozillazine org Getting started with extension development reg
  • 为什么不能为函数的形参指定存储类别?

    当我执行以下操作时 代码工作正常 include
  • 在 Java 中连接来自 HBase 的两个结果集?

    是否可以连接从 java 中的 hbase 检索的两个或多个结果集 不 不可能加入 JDBC 结果集 但是 您可以获取它们的结果并手动组合它们 如果它们兼容 如果它们属于同一实体 EDIT 如果您只需要组合两个相同类型的列表 您可以这样做
  • Stargazer 回归输出中具有交互作用的排序变量

    我有以下回归 fit1 lt lm y x1 data data fit2 lt lm y x1 x2 data data fit3 lt lm y x3 x1 data data 我希望输出中的解释变量按顺序排列 x1 x2 x3 最后是
  • 将 Numpy 数组复制到内存视图

    我有一个memoryview on a numpy数组并想复制另一个数组的内容numpy使用此数组将其放入其中memoryview import numpy as np cimport numpy as np cdef double 1 t