代码之家  ›  专栏  ›  技术社区  ›  Ash

将零有效地分配给2D numpy数组中每行的多个列

  •  0
  • Ash  · 技术社区  · 6 年前

    我想给一个2d numpy矩阵赋值0,其中每一行都有一个截断列,之后应该设置为0。

    例如,这里我们有一个大小为4x5的矩阵,带有截断列[1,3,2,4]。 我想做的是:

    import numpy as np
    np.random.seed(1)
    A = np.random.rand(4, 5)
    cutoff = np.array([1,3,2,4])
    A[0, cutoff[0]:] = 0
    A[1, cutoff[1]:] = 0
    A[2, cutoff[2]:] = 0
    A[3, cutoff[3]:] = 0
    

    我可以用它np.重复但我的矩阵太大了,我做不到。有没有有效的方法?

    1 回复  |  直到 6 年前
        1
  •  0
  •   Divakar    6 年前

    broadcasting 创建完整遮罩并指定-

    A[cutoff[:,None] <= np.arange(A.shape[1])] = 0
    

    builtin 外部方法-

    A[np.less_equal.outer(cutoff, range(A.shape[1]))] = 0