【问题标题】:Numpy: how to take some part of a matrixNumpy:如何获取矩阵的一部分
【发布时间】:2019-05-14 17:36:27
【问题描述】:

我只需要获取 1273x1273 维度的矩阵的一些部分/子集。

我有两个索引 ={i,j},我必须将矩阵的元素设为 i 作为行的索引,而不是 j 作为列的索引,反之亦然。

例如:

M=[[1,2,3,4],
  [5,6,7,8],
  [9,10,11,12],
  [13,14,15,16]]

如果 i=1 和 j=3,我必须构造一个子矩阵

[[5,7],
[13,15]]

我假设第一行和第一列的索引=0。

【问题讨论】:

  • 所以你想要第一行的元素而不是第三列的元素。您的预期输出必须是[5,6,8]。我在这里缺少什么?
  • @Sociopath:完全正确。反之亦然会产生[14,15,16]
  • 不是[5, 6, 7](行=1,列!=3)和[4, 12, 16](行!=1,列=3)吗?

标签: python numpy matrix indexing


【解决方案1】:

首先,获取行 ij

# names are less than perfect
row_i = M[i]
row_j = M[j]

然后从这些行中删除列 ji

del row_i[j]
del row_j[i]

然后返回您的新矩阵 ([row_i, row_j].)

【讨论】:

    【解决方案2】:

    我不知道 i 或 j 是否按你的意愿改变,但这里提取前 3 列而不提取第四列的基本方法是:

    m[:,:2]
    

    如果你想要最后一列单独使用:

    m[:,3]
    

    您可以将 2 更改为您想要的列号。

    【讨论】:

    • > 我只需要获取 1273x1273 维度的矩阵的一些部分/子集。正在使用的矩阵比 asker 提供的 4x4 示例要大得多(谢天谢地,他们没有将整个事情放到问题正文中!)
    • 他只要把“2”改成他想要的列号
    • > 他只需要将“2”更改为他想要的列号 那可能应该包含在您的答案中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-21
    • 2020-10-20
    相关资源
    最近更新 更多