在下面的代码中,m是numpy矩阵,absm是矩阵m的绝对值的矩阵副本。
m[absm < limit] = 0
如果相应的矩阵值是absm小于限制,我用它将m中的所有矩阵值都变为0。
这个工作正常,但是现在我想排除这段代码的前n行,如果它们在n行以下的行中,只能将值变为零,我不太清楚如何解决这个问题。
非常感谢
答案 0 :(得分:1)
你可以为它创建一个掩码,假设你的矩阵是NxM,那么N就是行数:
row_mask = np.arange(N) >= n
m[(absm < limit) & row_mask[:, None]] = 0
这使用广播(注意[:,None]成语)来应用&amp; (按位,然而,相当于逻辑的布尔值)和原始掩码和行掩码。行掩码实际上是1d向量(形状(N,))无索引添加另一个维度,因此row_mask[:, None]
是列向量(形状(N,1))。它的“薄”尺寸会自动扩展,以匹配您的矩形蒙版。