修改多维 numpy 数组中的对角线

2023-12-26

我有一个形状为 (7, 3, 7, 3) 的多维 numpy 数组,我想修改轴 0 和轴 2 重合的广义对角线。这个广义对角线将被定义为数组中第 0 个和第 2 个索引重合的元素,并且形状为 (3, 3, 7)。

Doing:

arr.diagonal(axis1=0, axis2=2)

我可以访问对角线的元素,但无法“就地”修改它们,至少在 numpy 1.8.2 版本中是这样。

Numpy 文档 http://docs.scipy.org/doc/numpy/reference/generated/numpy.diagonal.html解释说在 1.10 版本中这可能是可能的。但是,由于我依赖其他人使用相同的代码,因此更新到 numpy 1.10 不是一个选择。文档还建议使用 .copy() 以获得可移植的解决方案,但是 .copy() 将复制数组,但如果我想修改原始数组的对角线,这没有任何帮助。

或者,我尝试直接索引对角线元素[输入取自 numpy.indices((7, 3, 7, 3))],但没有成功。

如何访问广义对角线的元素来修改 numpy 1.8.2 中的原始数组?


创建这种广义对角线视图的一种方法是使用as_strided模块中的函数numpy.lib.stride_tricks。与两个轴的对角线关联的轴的步幅是这些轴的步幅之和。

例如:

In [196]: from numpy.lib.stride_tricks import as_strided

创建形状为 (7, 3, 7, 3) 的数组:

In [197]: a = np.arange(21*21).reshape(7,3,7,3)

In [198]: a[5, :, 5, :]
Out[198]: 
array([[330, 331, 332],
       [351, 352, 353],
       [372, 373, 374]])

创建与轴 0 和 2 关联的“对角线”视图。该视图的形状为 (3, 3, 7):

In [199]: d = as_strided(a, strides=(a.strides[1], a.strides[3], a.strides[0] + a.strides[2]), shape=(3, 3, 7))

检查,例如,d[:, :, 5]是相同的a[5, :, 5, :]:

In [200]: d[:, :, 5]
Out[200]: 
array([[330, 331, 332],
       [351, 352, 353],
       [372, 373, 374]])

验证一下d是一个视图a通过修改d看到这一点a已经改变:

In [201]: d[1, 1, 5] = -1

In [202]: a[5, :, 5, :]
Out[202]: 
array([[330, 331, 332],
       [351,  -1, 353],
       [372, 373, 374]])

小心as_strided!如果参数错误,可以写入外部内存a,可能导致 python 崩溃。

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

修改多维 numpy 数组中的对角线 的相关文章

  • 无法安装时间模块

    我试过了pip install time and sudo H pip install time 但我不断收到错误 找不到满足要求时间的版本 从 版本 未找到时间匹配的发行版 我正在 PyCharm 中工作 但真正没有意义的是我可以在 Py
  • 远程控制或脚本打开 Office 从 Python 编辑 Word 文档

    我想 最好在 Windows 上 在特定文档上启动 Open Office 搜索固定字符串并将其替换为我的程序选择的另一个字符串 我该如何从外部 Python 程序中做到这一点 OLE 什么 原生 Python 脚本解决方案 The doc
  • 基于 True/False 值的 Python 优雅赋值

    我想根据三个布尔值中的值设置一个变量 最直接的方法是 if 语句后跟一系列 elif if a and b and c name first elif a and b and not c name second elif a and not
  • pandas 两个数据框交叉连接[重复]

    这个问题在这里已经有答案了 我找不到有关交叉联接的任何内容 包括合并 联接或其他一些内容 我需要使用 my function 作为 myfunc 处理两个数据帧 相当于 for itemA in df1 iterrows for itemB
  • 一起使用 Argparse 和 Json

    我是 Python 初学者 我想知道 Argparse 和 JSON 是否可以一起使用 说 我有变量p q r 我可以将它们添加到 argparse 中 parser add argument p param1 help x variabl
  • 使用reduce方法的斐波那契数列

    于是 我看到有人用reduce方法来计算斐波那契数列 这是他的想法 1 0 1 1 2 1 3 2 5 3 对应于 1 1 2 3 5 8 13 21 代码如下所示 def fib reduce n initial 1 0 dummy ra
  • Python 相当于 Bit Twiddling Hacks 中的 C 代码?

    我有一个位计数方法 我正在尝试尽可能快地实现 我想尝试下面的算法位摆弄黑客 http graphics stanford edu seander bithacks html CountBitsSetParallel 但我不知道 C 什么是
  • 熊猫记忆

    我有冗长的计算 我重复了很多次 因此 我想使用记忆 诸如jug http packages python org Jug and joblib http packages python org joblib memory html 与Pan
  • 从 python 中的缩进文本文件创建树/深度嵌套字典

    基本上 我想迭代一个文件并将每行的内容放入一个深层嵌套的字典中 其结构由每行开头的空格数量定义 本质上 目标是采取这样的事情 a b c d e 并将其变成这样的东西 a b c d e Or this apple colours red
  • Python time.sleep - 永不醒来

    我认为这将是那些简单的问题之一 但它让我感到困惑 停止媒体 我是对的 找到了解决方案 查看答案 我正在使用 Python 的单元测试框架来测试多线程应用程序 很好而且很直接 我有 5 个左右的工作线程监视一个公共队列 以及一个为它们制作工作
  • 与函数复合 UniqueConstraint

    一个快速的 SQLAlchemy 问题 我有一个 文档 类 其属性为 数字 和 日期 我需要确保没有重复的号码同年 是 有没有办法对 数字 年份 日期 进行UniqueConstraint 我应该使用唯一索引吗 我如何声明功能部分 SQLA
  • 在仅包含键的字符串的嵌套数组中查找值

    我有一个数组 其中包含一些设置 基本上如下所示 defaults array variable gt value thearray gt array foo gt bar myvar gt array morevars gt moreval
  • python 中的基本矩阵转置

    我尝试了 python 中矩阵转置的最基本方法 但是 我没有得到所需的结果 接下来是代码 A 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 print A def TS A B A for i in range len A
  • 如何表示类的实例与将其作为输入的类之间的关系?

    我有一堂课叫House 这个类的实例是house class House def init self height length self height height self length length def housePlan hou
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0
  • Python列表对象属性“append”是只读的

    正如标题所说 在Python中 我试图做到这一点 以便当有人输入一个选择 在本例中为Choice13 时 它会从密码列表中删除旧密码并添加新密码 passwords mrjoebblock mrjoefblock mrjoegblock m
  • Django - 缺少 1 个必需的位置参数:'request'

    我收到错误 get indiceComercioVarejista 缺少 1 个必需的位置参数 要求 当尝试访问 get indiceComercioVarejista 方法时 我不知道这是怎么回事 views from django ht
  • bool() 和operator.truth() 有什么区别?

    bool https docs python org 3 library functions html bool and operator truth https docs python org 3 library operator htm
  • 如何将 Pandas Dataframe 中的字符串转换为字符列表或数组?

    我有一个名为的数据框data 其中一列包含字符串 我想从字符串中提取字符 因为我的目标是对它们进行一次性编码并使之可用于分类 包含字符串的列存储在预测因子如下 predictors pd DataFrame data columns Seq
  • 从 Flask 中的 S3 返回 PDF

    我正在尝试在 Flask 应用程序的浏览器中返回 PDF 我使用 AWS S3 来存储文件 并使用 boto3 作为与 S3 交互的 SDK 到目前为止我的代码是 s3 boto3 resource s3 aws access key id

随机推荐

  • 检测是否有其他应用程序正在请求麦克风

    我在 SO 上看到了多个问题 这些问题说不可能看到另一个应用程序何时想要使用麦克风 当其他应用程序在 Android 中使用麦克风时 无法访问麦克风 https stackoverflow com questions 24170124 un
  • 如何修复 Android 上 Spongy Castle 的错误:找不到类 java.awt.datatransfer.DataFlavor

    我使用 lib Spongy Castle 在 Android 上对邮件进行签名和加密这个例子 https github com rtyley spongycastle blob spongy master scmail jdk15on s
  • 当多个用户从 asp 会员身份登录时,如何将用户名放入 sql 触发器中

    我正在尝试记录对数据库的所有更改 但无法找到将当前用户名获取到触发器的方法 我有triggerData存储用户信息的表 guid userid data username logintime 这些是在用户登录时插入的 这是触发器 decla
  • Apache HttpClient 添加字节范围标头?

    有谁知道如何在 HTTP 请求中请求字节范围 我希望通过请求下载停止位置的字节范围并从 getContent 读取其 InputStream 来促进应用程序中下载的恢复 我尝试迭代标题 但它们为空 来源如下 import java io I
  • 如何引用现有GeoJSON leaflet对象的数据?

    我们有一个 Leaflet Map 我们正在尝试使用 GeoJSON 构建它 我们的数据来自实时流 因此我们首先使用空数据初始化 GeoJSON var myLayer L geoJson style function feature va
  • 在 Aurelia 中,槽可以用于重复绑定吗?

    我想创建一个循环遍历数组并将其应用于数组中的每个项目的自定义元素 例如 自定义元素的视图模板将包含类似以下内容的内容 div div div div
  • 在 SSL 证书主题字段中添加 ID

    我想知道是否有一种简单的方法可以在创建 SSL 证书时自动生成 全局 唯一 ID 并将其添加到主题字段中 查看 OpenSSL bash 命令 示例将会很有帮助 something along the lines of this 首先 主题
  • 在 Jersey 1.18.1 请求过滤器中获取资源注释

    我正在实现一个用户授权模块 该模块将使用 新 注释应用于资源方法 为此 我创建了一个 Jersey 请求 过滤器 我需要在其中获取注释以允许 禁止资源操作 我正在使用 Dropwizard 0 7 1 和 Jersey 1 18 1 资源类
  • 如何在 UNIX 中创建新的环境变量......?

    如何在unix中创建新的环境变量并在程序中使用它 你可以知道你正在运行什么 shellps o comm p 我认为这或多或少是普遍的 所以 在 bash 和某些类似的 shell 中 如果您想为一次特定运行创建变量 您可以这样做 MYVA
  • 如何构建我的 Express 应用程序,只需要打开 mongodb 连接一次?

    注意 请在回答之前阅读这篇文章的编辑部分 它可能会节省您的时间并回答我的问题之一 我遇到的问题非常简单 但我对整体来说还很陌生 并且在弄清楚如何在节点 express 应用程序中正确实现 mongodb 数据库连接时遇到问题 我正在使用 E
  • 管道缓冲区保留直到处理完成

    我正在研究使用管道处理来自网络的二进制消息的可能性 我将处理的二进制消息带有有效负载 并且希望将有效负载保持为二进制形式 这个想法是读出整个消息并创建一个消息片及其有效负载 一旦消息被完全读取 它将被传递到通道链进行处理 处理不会是即时的
  • 在 rgdal R 中使用 spTransform 重新投影空间点时出错

    G day 我在 CRS 澳大利亚大地基准 66 84 为了简洁起见 AGD66 中有大量经 纬度坐标 我想将这些坐标从 AGD66 更改为 WGS84 因为它们之间大约有 200m 的差异 而且我在 WGS84 中有其他坐标和图层 我尝试
  • PHP 计算对象属性出现次数

    我有一个如下所示的 PHP 对象 我想知道获取属性 typeId 3 的对象计数的最简单方法是什么 Array 0 gt ABC Object id gt 13 typeId gt 3 sortOrder gt 0 1 gt ABC Obj
  • 在python中添加atom中的模块

    我的计算机上安装了 pygame 和 tkinter 模块 但我无法找到如何在文本编辑器 Atom 中访问它们 我可以在 IDLE 中使用它们 import pygame 但是当我尝试将其导入atom 时 它无法识别该模块 有人知道为什么吗
  • Firefox 是否支持表格元素上的position:relative?

    当我尝试使用时position relative position absolute on a th or td 在 Firefox 中它似乎不起作用 简单且最正确的方法是将单元格的内容包装在 div 中并添加相对于该 div 的位置 ex
  • .net core razor 页面中的多个视图组件未正确绑定

    我正在使用 razor 页面创建一个 net core 5 Web 应用程序 并且正在努力将我创建的视图组件绑定到我的页面 如果我在页面上有多个相同的视图组件 以下完美运行 我的页面 cshtml page model MyPageMode
  • 多个邮件附件 - PhoneGap

    您好 我正在phonegap中做一个应用程序 它需要有多个附件 但我无法有多个附件 任何解决方案 我的代码如下
  • 使用单个函数调用写入多个文件描述符

    我有一个群聊服务器的用例 其中服务器必须向所有客户端的套接字写入一个公共字符串 然后 我通过循环遍历文件描述符列表并将字符串写入每个文件描述符来解决这个问题 现在我正在考虑寻找更好的解决方案 是否可以通过使用 Linux 中的 tee 系统
  • 在 Swift 3.0 中转换 base64String 中的音频文件

    我正在使用以下代码录制音频文件 let audioFilename getDocumentsDirectory appendingPathComponent tt mp4 let settings AVFormatIDKey Int kAu
  • 修改多维 numpy 数组中的对角线

    我有一个形状为 7 3 7 3 的多维 numpy 数组 我想修改轴 0 和轴 2 重合的广义对角线 这个广义对角线将被定义为数组中第 0 个和第 2 个索引重合的元素 并且形状为 3 3 7 Doing arr diagonal axis