python - 用 numpy 快速切片
问题描述
在我的应用程序中A
,jj
以扁平的 1-dimnumpy
数组的形式给出。jj
没有严格的规则模式。我们可以通过以下方式解决jj
切片A
:
A = np.arange(10)
jj = np.array([3,5,6])
A[jj]
这被称为“花式切片”,被告知要慢。有没有办法通过以下方式加快访问速度:
A = np.arange(10)
jj = np.array([3,5,6])
ii = slice(jj)
A[ii]
这个例子不起作用,但也许还有另一种精益方式。切片命令快速且有吸引力。有没有办法将jj
numpy-array 转换为 aslice(jj)
以提高效率?
我的背景是在具有可变系数的计算流体动力学中建立重复的大型系统矩阵。感谢您的一些提示!
解决方案
不幸的是,由于您没有常规模式,因此没有比花哨的索引更好的方法了。这是唯一的方法。
它较慢的原因是切片索引不会复制值,因为您可以创建具有所需步幅的视图。对于不规则的图案,您只能复制数据。因此它会变慢。
推荐阅读
- node.js - 为 Amadeus SOAP API 创建密码摘要的问题
- javascript - 如何根据所选对象本身过滤数组 Java 脚本
- rust - 如何在 rust 结构中保存迭代器
- lua - 我们为 Lua 表提供了一个任务,但它没有按预期工作
- javascript - JavaScript 中的 fs 是否能够通过 Heroku 编辑 GitHub 存储库中的文件?
- amazon-web-services - 从 Java 代码创建 S3 批处理作业时出现 400 错误请求错误
- php - 表单上传文件无法显示
- javascript - React 入口点:Index.html 与 index.js?节点代码在哪里?
- node.js - 我想将 PermLvl 添加到我的 index.js -- DISCORD.JS
- flutter - 如何在发送消息时滚动聊天屏幕