通过Numpy中的逻辑索引获取矩阵的网格

pet*_*hor 6 python matlab numpy matrix-indexing

我正在尝试使用最初在MATLAB中的numpy重写函数.在MATLAB中有一个逻辑索引部分如下:

X = reshape(1:16, 4, 4).';
idx = [true, false, false, true];
X(idx, idx)

ans =

     1     4
    13    16
Run Code Online (Sandbox Code Playgroud)

当我尝试使它成为numpy时,我无法获得正确的索引:

X = np.arange(1, 17).reshape(4, 4)
idx = [True, False, False, True] 
X[idx, idx]
# Output: array([6, 1, 1, 6])
Run Code Online (Sandbox Code Playgroud)

通过逻辑索引从矩阵中获取网格的正确方法是什么?

Amr*_*mro 7

你也可以这样写:

>>> X[np.ix_(idx,idx)]
array([[ 1,  4],
       [13, 16]])
Run Code Online (Sandbox Code Playgroud)

  • @Akavall - Amro支持任务,而我的更快; 所以他们有不同的用例.那就是`X [np.ix_(idx,idx)] = np.zeros((2,2))`修改原始数组,但是`X [idx] [:,idx] = np.zeros((2, 2))`没有. (2认同)