如何从 9 个大小为 N 的数组快速创建 N 个 3x3 矩阵的数组?

2023-12-09

假设我有 9 个大小为 N 的数组(A、B、C、.. J)。我想创建一个由 N 3x3 矩阵组成的新数组,例如

matrices[i] = [[A[i], B[i], C[i]],
               [D[i], E[i], F[i]],
               [G[i], H[i], J[i]]]

一个简单的解决方案是将每个条目添加到数组中matrices在 for 循环中为:

for i in range(len(matrices)):
    matrices[i] = [[A[i], B[i], C[i]],
            [D[i], E[i], F[i]],
            [G[i], H[i], J[i]]]

有人知道如何以更快、矢量化的方式避免 for 循环来完成此操作吗?如果存在一些智能索引操作什么的。


一种方法是将它们堆叠在列中np.column_stack并重塑np.reshape -

np.column_stack((A,B,C,D,E,F,G,H,J)).reshape(-1,3,3)

连接与np.concatenate众所周知,速度要快得多,因此将其与2D transpose并重塑——

np.concatenate((A,B,C,D,E,F,G,H,J)).reshape(9,-1).T.reshape(-1,3,3)

另一个与np.concatenate, 3D transpose并重塑——

np.concatenate((A,B,C,D,E,F,G,H,J)).reshape(3,3,-1).transpose(2,0,1)

运行时测试 -

In [59]: # Setup input arrays
    ...: N = 1000
    ...: A = np.random.randint(0,9,(N,))
    ...: B = np.random.randint(0,9,(N,))
    ...: C = np.random.randint(0,9,(N,))
    ...: D = np.random.randint(0,9,(N,))
    ...: E = np.random.randint(0,9,(N,))
    ...: F = np.random.randint(0,9,(N,))
    ...: G = np.random.randint(0,9,(N,))
    ...: H = np.random.randint(0,9,(N,))
    ...: J = np.random.randint(0,9,(N,))
    ...: 

In [60]: %timeit np.column_stack((A,B,C,D,E,F,G,H,J)).reshape(-1,3,3)
10000 loops, best of 3: 84.4 µs per loop

In [61]: %timeit np.concatenate((A,B,C,D,E,F,G,H,J)).reshape(9,-1).T.reshape(-1,3,3)
100000 loops, best of 3: 15.8 µs per loop

In [62]: %timeit np.concatenate((A,B,C,D,E,F,G,H,J)).reshape(3,3,-1).transpose(2,0,1)
100000 loops, best of 3: 14.8 µs per loop
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 9 个大小为 N 的数组快速创建 N 个 3x3 矩阵的数组? 的相关文章

  • OpenCV Python 删除图像中的某些对象

    我正在使用带有 opencv 和 numpy 的 python 来检测天文中的星星 例如这个1 https i stack imgur com AKwEJ jpg图片 使用模板匹配 我可以用阈值检测星星 单击 2 2 https i sta
  • 使用 Flask SQLAlchemy 进行表(模型)继承

    我遵循了这个建议question https stackoverflow com questions 1337095 sqlalchemy inheritance但我仍然收到此错误 sqlalchemy exc NoForeignKeysE
  • 按 ListProperty (NDB) 对查询进行排序

    如何按 ListProperty 对查询进行排序 该模型 class Chapter ndb Model title ndb StringProperty required True version ndb IntegerProperty
  • 垂直线 axvline 在 matplotlib 的 loglog 图中绘制位于错误位置的线

    我在使用 axvline 在 matplotlib 的 loglog 图中绘制垂直线时遇到问题 第一个问题是垂直线没有出现在正确的位置 第二个问题 可能相关的是 当我放大或平移绘图时 垂直线只是保持在原位 并且没有通过平移 滑动绘图 或放大
  • 如何使用Gson将JSONArray转换为List?

    在我的 Android 项目中 我试图将收到的 JSONArray 转换为列表 在 的帮助下这个答案 https stackoverflow com questions 8371274 how to parse json array in
  • 在 Python 中比较日期 - 如何处理时区修饰符

    我正在做Python日期比较 假设我有一个这样的约会 Fri Aug 17 12 34 00 2012 0000 我按以下方式解析它 dt datetime strptime Fri Aug 17 12 34 00 2012 0000 a
  • 如何在 mongo shell 查询中仅投影嵌套数组的匹配字段

    我对 mongodb 相当陌生 我希望这是一个简单的问题 我有一个嵌套架构 其中有一个数组字段 其中该数组的每个项目都是一个本身具有数组字段的对象 例如 gt db mytest insert name a top x 1 y 2 nest
  • Python NLP 英式英语与美式英语

    我目前正在用Python 进行NLP 工作 然而 在我的语料库中 既有英式英语也有美式英语 实现 实现 我正在考虑将英式英语转换为美式英语 但是 我没有找到一个好的工具 包来做到这一点 有什么建议么 我也找不到包 但试试这个 请注意 我必须
  • 如何通过facebook-sdk python api获取用户帖子?

    我使用 facebook jssdk 授权我的应用程序读取用户个人资料和用户帖子 FB login function response scope user status user likes user photos user videos
  • 检查对象数组中的多个属性匹配

    我有一个对象数组 它们都是相同的对象类型 并且它们有多个属性 有没有办法返回一个较小的对象数组 其中所有属性都与测试用例 字符串匹配 无论该属性类型是什么 使用列表理解all http docs python org 3 library f
  • 出现意外的关键字参数“timeout”(Python 中的 google-cloud-storage)

    使用 google cloud storage 的 Python 项目在本地运行良好 但是当它从 App Engine 运行时 会显示错误 Traceback most recent call last File opt python3 7
  • keras 预测内存交换无限期增加

    我使用keras实现了一个分类程序 我有一大组图像 我想使用 for 循环来预测每个图像 然而 每次计算新图像时 交换内存都会增加 我尝试删除预测函数内部的所有变量 并且我确信该函数内部存在问题 但内存仍然增加 for img in ima
  • 如何从c++调用python

    我是Python新手 我尝试像这样从 C 调用 python 脚本 在 Raspberry Pi 中 std string pythonCommand python Callee py a b int res system pythonCo
  • 写入 UDP 套接字会被阻塞吗?

    如果是的话 在什么条件下 或者 换句话说 在twisted 中运行此代码是否安全 class StatsdClient AbstractStatsdClient def init self host port super StatsdCli
  • Python:使用列表创建二叉搜索树

    我的代码的目标是从 txt 文件中获取每个单独的单词并将其放入列表中 然后使用该列表创建二叉搜索树来计算每个单词的频率 并按字母顺序打印每个单词及其频率 中的每个单词只能包含字母 数字 或 我无法用我的初学者编程知识来做的部分是使用我拥有的
  • Cuda:最小二乘求解,速度较差

    最近 我使用Cuda编写了一个名为 正交匹配追踪 的算法 在我丑陋的 Cuda 代码中 整个迭代需要 60 秒 而 Eigen lib 只需 3 秒 在我的代码中 矩阵 A 是 640 1024 y 是 640 1 在每一步中 我从 A 中
  • Synapse Notebook 参考 - 使用参数从另一个笔记本调用 Synapse Notebook

    我有一个带有参数的突触笔记本 我试图从另一个笔记本调用该笔记本 我正在使用 run 命令 我应该如何将参数从基本笔记本传递到正在调用的笔记本 另外 对我来说 上述答案不起作用 作为对此问题的单独解决方案 下面是一个答案 打开笔记本并转到最右
  • 在没有numpy的情况下在python中分配变量NaN

    大多数语言都有一个 NaN 常量 您可以使用它为变量分配值 NaN python 可以在不使用 numpy 的情况下做到这一点吗 是的 使用math nan https docs python org 3 library math html
  • 如何获取所有Python标准库模块的列表?

    我想要类似的东西sys builtin module names标准库除外 其他不起作用的事情 sys modules 只显示已经加载的模块 sys prefix 包含非标准库模块并且似乎无法在 virtualenv 内工作的路径 我想要这
  • 将笔记本生成的 HTML 片段转换为 LaTeX 和 PDF

    在我的笔记本里有时会有 from IPython display import display HTML display HTML h3 The s is important h3 question of the day 但当我后来将笔记本

随机推荐

  • arima.sim() 函数具有变化:样本大小、phi 值和 sd 值

    我想模拟ARIMA 1 1 0 随变化 样本量 phi值 标准偏差值 我很佩服下面的吼叫r代码只是模拟一个ARIMA 1 1 0 我想遵循格式来模拟许多ARIMA 1 1 0 随着变化的样本量 phi值 and 标准偏差值 wn lt rn
  • 无法执行不同的投影查询

    我有一个简单的小 观察 课 from google appengine ext import ndb class Observation ndb Model remote id ndb StringProperty dimension id
  • 在 MVC3 中使用 WebApi

    使用 WebApi 在 MVC 客户端中使用服务的最佳方式是什么 如果响应返回为
  • PHP数据库连接实践

    我有一个连接到多个数据库 Oracle MySQL 和 MSSQL 的脚本 每次脚本运行时可能不会使用每个数据库连接 但所有数据库连接都可以在单个脚本执行中使用 我的问题是 即使所有连接可能都没有被使用 最好在脚本开始时连接到所有数据库一次
  • 基于范围的 for 如何适用于普通数组?

    在 C 11 中 您可以使用基于范围的for 其作用为foreach其他语言的 它甚至适用于普通的 C 数组 int numbers 1 2 3 4 5 for int n numbers n 2 它如何知道何时停止 它是否仅适用于已在同一
  • 为什么同样的方法在 Swift 的数组扩展中会失败?

    当我尝试打电话时 我的行为很奇怪sort 从数组扩展中 例如此方法 func test let a 1 2 3 sort a x y in x lt y 可以单独工作 但在内部时会失败Array扩大 extension Array func
  • 从字节数组中创建新的 FileStream

    我正在尝试从字节数组创建一个新的 FileStream 对象 我确信这根本没有意义 所以我将在下面尝试更详细地解释 我正在完成的任务 1 读取之前的源文件压缩的2 使用GZipStream解压数据 3 将解压后的数据复制到字节数组中 我想改
  • Android 设备重启后广播接收器不工作

    我已经检查了所有相关问题 但没有找到解决此问题的方法 所以这对我来说绝对是一个新问题 我拥有的 我有一个 Android 应用程序 它在其清单中注册了一些广播接收器 这就是我的清单的样子
  • JavaFX:父级及其子级的鼠标单击事件

    我有一张卡片 由页眉 正文和页脚组成 可以包含更多节点 如标签 文本字段等 我需要抓住on mouse clicked单击发生时的任何时间事件卡内 无论它是卡本身还是它的子卡之一 现在 如果我单击文本字段 则不会触发事件 private S
  • 在发布的 Android 应用程序中完全禁用 LogCat 输出?

    关闭my own在将应用程序发布到市场之前 应用程序的 LogCat 输出非常简单 我还知道如何通过标签和 或 id 有选择地过滤 LogCat 消息 以方便我自己的调试 但现在我对一些可能更困难 也许不可能 的事情感兴趣 禁用所有 Log
  • 如何在zend框架中添加新类并自动加载

    我是 Zend 框架的新手 第一次使用它 我正在寻找可以在很短的时间内阅读的简单基础教程 如果我想在 Zend 库中添加新类 我也坚持这样做 当我制作任何新控制器时 它也应该自动加载 如果您有意见 请提出您的意见 Regards 这在一开始
  • 在基本身份验证 URL 中转义用户名字符

    使用http基本身份验证时 可以在URL中传递用户名 例如 http email protected path 但现在假设用户名是电子邮件地址 例如 电子邮件受保护 这样做显然是不明确的 http email protected foo c
  • LESS:您可以将 CSS 选择器与媒体查询分组吗?

    我真的很高兴发现您可以创建一个媒体查询变量 您可以轻松地重用该变量并使您的代码更具可读性 tablet min width 768px and max width 980px media tablet 我想知道是否可以将媒体查询与选择器分组
  • IBM Worklight - 如何更改默认的“Worklight 设置”字符串?

    有没有办法更改 Android 选项菜单中 Worklight 提供的默认 Work Light 设置 字符串 Update 稍微纠正一下答案 Yes 打开您的App is 位于yourProject apps yourApp common
  • 在eclipse中使用java库

    我对 eclipse 有点陌生 想要使用以下库 以便我可以使用它们实现的对象 HttpClient 和 Java csv 我如何导入这些库以便我可以用它们编写一些java http hc apache org downloads cgi h
  • 使用 JsonReader 而不是 JsonSerializer 时自定义 JsonConverter 不起作用

    我有课Foo和它的FooConverter定义如下 JsonConverter typeof FooConverter public class Foo public string Something get set public clas
  • 是否有一个 iOS“厨房水槽”应用程序可以在任何地方获取源代码? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心以获得指导 我正在学习 iOS 开发
  • 带有 {fmt} 的自定义格式说明符用于自定义类

    在格式化我自己的自定义类型时 我将如何允许自定义填充等 struct S int x template lt gt struct fmt formatter
  • Sqlite 检查逗号分隔的数字字符串是否包含数字

    如何检查Sqlite中的字符串是否包含数字 该字符串是逗号分隔的正数 不以 0 开头 我需要检查它是否包含其他数字 Ex Is 5 in 1 2 1 gt 否 Is 5 in 35 55 15 gt 否 Is 5 in 5 gt 是的 Is
  • 如何从 9 个大小为 N 的数组快速创建 N 个 3x3 矩阵的数组?

    假设我有 9 个大小为 N 的数组 A B C J 我想创建一个由 N 3x3 矩阵组成的新数组 例如 matrices i A i B i C i D i E i F i G i H i J i 一个简单的解决方案是将每个条目添加到数组中