我试图从一个三维矩阵中提取一个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中的高级索引有点困惑,我自己也不知道。谢谢!
发布于 2018-06-10 15:45:18
我假设有一个索引数组来索引到最后一个轴。我们叫它idx吧。对于问题中有给定文本的给定样本,将是-
idx = np.array([[1,0],[0,2]])具体而言,这是从引用的案文中摘录出来的:
1是第一行第一列的第2元素,9是第一行第二列的第1元素,0是第二行第一列的1元素,8是第二行第二列的第3元素。
为了解决这个问题,我们将使用带有np.ogrid的开放网格对输入数组的前两个轴进行索引-
m,n = idx.shape
I,J = np.ogrid[:m,:n]
out = A[I,J,idx]样本运行-
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]])https://stackoverflow.com/questions/50785226
复制相似问题