python - NumPy 通过索引获取多行的快速方法
问题描述
给定一个 shape 的多维数组(6, 100, 2)
和一个索引列表(例如[1,2,3,1,5,0,0,0,1]
:),我想获得一个 numpy ndarray,其中包含这些索引中的数据(意思是,输出形状是(9, 100, 2)
,行 6,7,8 是彼此)。
天真的解决方案:
arr = []
indexes = [1,2,3,1,5,0,0,0,1]
for i in indexes:
arr.append(data[i])
arr = np.stack(arr)
这种幼稚的解决方案浪费了大量的时间__getitem__
和stack
操作,我想知道是否有更快的方法来使用 numpy 做到这一点?
解决方案
你可以只使用下标。因此,如果data
是您的 6×100×2 矩阵,并且indexes
是您的索引列表,您可以使用以下命令检索结果:
result = data[indexes]
推荐阅读
- android - 在协程中切换到 UI 上下文
- ruby-on-rails - 序列化属性的活动管理员自定义过滤器
- javascript - 在旧 ES 版本中执行异步函数后获取数据
- python - 如何对返回常量值的 lambda 函数使用矢量化 NumPy 操作?
- redux - 安全模板 Elmish redux 开发工具消息总是“UserMsg”
- css - TinyMCE V5 - 在 CSS 网格内垂直显示的工具栏标签
- angular - 如何在 ngModel 中创建具有动态名称的元素?
- sql - 使用 PowerShell 和 SSMS 生成数据播种脚本
- php - YouTube Live Streaming API 如何将自定义缩略图设置为直播对象
- python - 'for a in x:' 没有解决 'for x in x:'