用 -infinity - Python 填充 Numpy 数组的下三角(包括对角线)

fill lower triangle (including diagonal) of a Numpy Array with -infinity - Python

我有一个二维数组如下。

[[1 2 3]
 [4 5 6]
 [7 8 9]]

我需要转换成:

[[-inf  2   3] 
 [-inf -inf 6]
 [-inf -inf -inf]]

即,将下三角形(包括对角线)填充到-infinity。 如何使用 python 来做到这一点?请帮忙。

使用np.tril_indices:

m[np.tril_indices(m.shape[0])] = -np.inf
print(m)

array([[-inf,   2.,   3.],
       [-inf, -inf,   6.],
       [-inf, -inf, -inf]])

@Kevin 建议,使用:

m[np.tril_indices_from(m)] = -np.inf

注意:数组的 dtype 必须是 float,因为 np.inf 是 float。