首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从三维numpy阵列的最后维中提取值

从三维numpy阵列的最后维中提取值
EN

Stack Overflow用户
提问于 2018-06-10 15:28:38
回答 1查看 4.1K关注 0票数 0

我试图从一个三维矩阵中提取一个2d矩阵,它是最后一个维,从三维矩阵的最后一个维中提取值。例如,如果维数为2,2,3 =P

[ [[5, 1, 5], [9, 9, 4]], [[0, 9, 8], [8, 6, 8]] ]

要得到输出矩阵[[1, 9],[0, 8]]的索引矩阵是什么,其中1是第一行第一列的第二元素,9是第一行第二列的第一元素,0是第二行第一列的第一元素,8是第二行第二列的第三元素?我的想法是,对于每一列,我都有不同的分数。我想为每一列检索一个我知道索引的不同分数。

我对Numpy中的高级索引有点困惑,我自己也不知道。谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-10 15:45:18

我假设有一个索引数组来索引到最后一个轴。我们叫它idx吧。对于问题中有给定文本的给定样本,将是-

代码语言:javascript
复制
idx = np.array([[1,0],[0,2]])

具体而言,这是从引用的案文中摘录出来的:

1是第一行第一列的第2元素,9是第一行第二列的第1元素,0是第二行第一列的1元素,8是第二行第二列的第3元素

为了解决这个问题,我们将使用带有np.ogrid的开放网格对输入数组的前两个轴进行索引-

代码语言:javascript
复制
m,n = idx.shape
I,J = np.ogrid[:m,:n]
out = A[I,J,idx]

样本运行-

代码语言:javascript
复制
In [57]: A
Out[57]: 
array([[[5, 1, 5],
        [9, 9, 4]],

       [[0, 9, 8],
        [8, 6, 8]]])

In [59]: idx = np.array([[1,0],[0,2]])

In [60]: m,n = idx.shape

In [61]: I,J = np.ogrid[:m,:n]

In [62]: A[I,J,idx]
Out[62]: 
array([[1, 9],
       [0, 8]])
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50785226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档