【问题标题】:How to create Numpy matrix of row index where a certain condition is met?如何在满足特定条件的情况下创建行索引的 Numpy 矩阵?
【发布时间】:2019-07-06 15:00:23
【问题描述】:

在满足特定条件的情况下,如何将值的 numpy 矩阵转换为行索引的 numpy 矩阵?

我们说

A = array([[ 0.,  5.,  0.],[ 0.,  0.,  3.],[ 0.,  0.,  0.]])

如果我想在这里使用一个条件——如果一个元素大于 0,然后用行索引+1 替换它,我会怎么做? 所以输出应该是,

B = array([[0., 1., 0.],[0., 0., 2.],[0., 0., 0.]])

不确定我是否正确使用 np.where。谢谢。

【问题讨论】:

    标签: numpy matrix where-clause


    【解决方案1】:

    使用numpy.where

    np.where(A>0, np.arange(1, A.shape[0]+1)[:, None], A)
    

    array([[0., 1., 0.],
           [0., 0., 2.],
           [0., 0., 0.]])
    

    或者您可以使用算术(如果您的值 小于 小于0,则无法使用):

    (A > 0) * np.arange(1, A.shape[0]+1)[:, None]
    

    【讨论】:

    • 谢谢 - 这行得通!只是一个快速的后续问题——第一个条件可以是任何东西吗?就像我们只想保留每列的最大值 (np.max(A, axis=0) ??) 而其他一切都是 0?那么如果 A[0,2] = 1 而不是,B[0,2] 可以只是 0 而不是 1 吗?
    猜你喜欢
    • 2017-10-26
    • 2021-09-01
    • 2014-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-12-31
    • 2020-11-04
    • 2011-07-20
    相关资源
    最近更新 更多