从每一行中选择特定的列

普里坦

我有A一个形状矩阵(p, q, r, r)和另一个I形状矩阵(r, s)我只想从的最后一个维度中选择r个元素中的s个,以A使新矩阵的形状变为(p, q, r, s)

为了简化(忽略前两个维度),让

>>> A
array([[5, 2, 5, 7],
       [2, 6, 4, 3],
       [4, 2, 3, 9],
       [6, 2, 4, 3]])
>>> I
array([[1, 2],
       [2, 2],
       [3, 1],
       [2, 1]])

我想要矩阵

array([[2, 5],
       [4, 4],
       [9, 2],
       [4, 2]])

我该怎么做?A[..., I]给出一个(4, 4, 2)矩阵,I从每一行中选择位于的元素我可以通过解决问题

>>> c = np.arange(4)
>>> A[..., I][c, c, :]
array([[2, 5],
       [4, 4],
       [9, 2],
       [4, 2]])

但是我认为这需要大量的计算。有没有更有效的方法来解决此问题?

编辑:对于高维示例,请考虑I与之前相同,并且

A
array([[[[12, 15,  6, 12],
         [16, 16,  4, 17],
         [ 6, 19, 10,  9],
         [ 5, 11, 18, 17]],

        [[13, 12,  5,  6],
         [12,  7,  5,  4],
         [ 9, 19, 12,  4],
         [15,  4, 16,  7]],

        [[13,  6,  5, 17],
         [ 8,  4, 10,  9],
         [ 3, 13, 16,  4],
         [ 3,  3,  4,  4]]],


       [[[ 8,  3,  8, 18],
         [ 7, 11,  8,  7],
         [10,  8, 14,  9],
         [ 8, 12, 16,  5]],

        [[ 9, 10, 10,  7],
         [11,  6, 10,  6],
         [16, 19, 10, 14],
         [ 9, 13, 13, 19]],

        [[10,  8, 19, 12],
         [ 9, 10, 17, 19],
         [ 4, 11, 12, 14],
         [ 8,  5, 16, 10]]]])

预期产量:

array([[[[15,  6],
         [ 4,  4],
         [ 9, 19],
         [18, 11]],

        [[12,  5],
         [ 5,  5],
         [ 4, 19],
         [16,  4]],

        [[ 6,  5],
         [10, 10],
         [ 4, 13],
         [ 4,  3]]],


       [[[ 3,  8],
         [ 8,  8],
         [ 9,  8],
         [16, 12]],

        [[10, 10],
         [10, 10],
         [14, 19],
         [13, 13]],

        [[ 8, 19],
         [17, 17],
         [14, 11],
         [16,  5]]]]

A[...,I][..., c, c, :] 产生这个结果

亚图

由于您使用的是整数数组索引,因此您需要指定要从中选择这些列的行:

A[np.arange(A.shape[0])[:,None], I]
array([[2, 5],
       [4, 4],
       [9, 2],
       [4, 2]])

或者您也有np.take_along_axis

np.take_along_axis(A, I, 1)

对于较大的形状数组(p, q, r, r),请沿前轴完整切片,并以类似方式使用广播:

A[...,np.arange(A.shape[2])[:,None],I]
array([[[[15,  6],
         [ 4,  4],
         [ 9, 19],
         [18, 11]],

        [[12,  5],
         [ 5,  5],
         [ 4, 19],
         [16,  4]],
        ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为矩阵的每一行设置特定列的值

来自分类Dev

从二进制numpy矩阵的每一行中选择随机的一个?

来自分类Dev

如何从Pandas DataFrame的每一行中选择特定的列?

来自分类Dev

从每一行的一列中选择多个选定的值

来自分类Dev

从主表中选择记录并在另一个表中选择每一行的计数

来自分类Dev

如何通过选择结果更新列的每一行?

来自分类Dev

如何基于包含表名的字符串从表中选择每一行?

来自分类Dev

如何从矩阵中选择每一行进行不同的操作

来自分类Dev

给定二维矩阵,找到元素的最小和,以便从每一行和每一列中选择一个元素?

来自分类Dev

从列表的每一行中选择n个随机元素

来自分类Dev

根据输入在R的每一行中选择不同的列,并计算每行中大于0的值

来自分类Dev

以double矩阵汇总每一行的特定列

来自分类Dev

向特定列的每一行添加引号

来自分类Dev

如何基于在特定列中搜索数据来在Pandas Dataframe中选择一行

来自分类Dev

从另一数组中选择具有列索引的每一行中的元素

来自分类Dev

为numpy中的每一行选择列

来自分类Dev

从列的每一行中删除特定值

来自分类Dev

从另一列中选择列,作为每一列的行

来自分类Dev

从二进制numpy矩阵的每一行中选择随机的一个?

来自分类Dev

如何通过选择结果更新列的每一行?

来自分类Dev

选择/突出显示每一行中每个特定单元格值(“ Apple”)的列范围(AL)

来自分类Dev

如何在MATLAB中从3D矩阵的每一行中选择矢量元素?

来自分类Dev

通过从表数组中选择每一行来构造R data.table

来自分类Dev

在excel中选择特定事件的上一行

来自分类Dev

如何从R中的数据帧的每一行中选择最常出现的元素

来自分类Dev

在一行SQL中选择行对

来自分类Dev

在输出的每一行中的特定列之间选择文本

来自分类Dev

R - 在每一行中选择非空单元格并创建新列

来自分类Dev

如何从数据帧每一行的一系列数字中选择特定值

Related 相关文章

  1. 1

    为矩阵的每一行设置特定列的值

  2. 2

    从二进制numpy矩阵的每一行中选择随机的一个?

  3. 3

    如何从Pandas DataFrame的每一行中选择特定的列?

  4. 4

    从每一行的一列中选择多个选定的值

  5. 5

    从主表中选择记录并在另一个表中选择每一行的计数

  6. 6

    如何通过选择结果更新列的每一行?

  7. 7

    如何基于包含表名的字符串从表中选择每一行?

  8. 8

    如何从矩阵中选择每一行进行不同的操作

  9. 9

    给定二维矩阵,找到元素的最小和,以便从每一行和每一列中选择一个元素?

  10. 10

    从列表的每一行中选择n个随机元素

  11. 11

    根据输入在R的每一行中选择不同的列,并计算每行中大于0的值

  12. 12

    以double矩阵汇总每一行的特定列

  13. 13

    向特定列的每一行添加引号

  14. 14

    如何基于在特定列中搜索数据来在Pandas Dataframe中选择一行

  15. 15

    从另一数组中选择具有列索引的每一行中的元素

  16. 16

    为numpy中的每一行选择列

  17. 17

    从列的每一行中删除特定值

  18. 18

    从另一列中选择列,作为每一列的行

  19. 19

    从二进制numpy矩阵的每一行中选择随机的一个?

  20. 20

    如何通过选择结果更新列的每一行?

  21. 21

    选择/突出显示每一行中每个特定单元格值(“ Apple”)的列范围(AL)

  22. 22

    如何在MATLAB中从3D矩阵的每一行中选择矢量元素?

  23. 23

    通过从表数组中选择每一行来构造R data.table

  24. 24

    在excel中选择特定事件的上一行

  25. 25

    如何从R中的数据帧的每一行中选择最常出现的元素

  26. 26

    在一行SQL中选择行对

  27. 27

    在输出的每一行中的特定列之间选择文本

  28. 28

    R - 在每一行中选择非空单元格并创建新列

  29. 29

    如何从数据帧每一行的一系列数字中选择特定值

热门标签

归档