首页 > 解决方案 > Numpy 矩阵模索引提取

问题描述

假设我有一个二维矩阵 A,比如说

A = np.mat([[1,2,3,4], 
            [5,6,7,8],
            [9,10,11,12]])

如何将第 1 行中列索引模 2 的所有元素更改为 0?即,我想获得

np.mat([[1,2,3,4], 
        [0,6,0,8], 
        [9,10,11,12]])

我努力了

A[1][np.arange(len(A))%2==0] = 0

这会导致 IndexError。

标签: pythonnumpy

解决方案


Columnindex % 2 = 0表示索引是偶数。您可以将偶数列索引处的第一行的元素更改为 0,如下所示:

A[1, ::2] = 0  # 2 is the step

如果您想将其作为您的 (incorrect) A[1][np.arange(len(A))%2==0] = 0,则应将其更改为

A[1, np.arange(A.shape[1]) % 2 == 0] = 0

whereA.shape[1]是列数(而len(A)为您提供行数)。


推荐阅读