【发布时间】:2021-03-13 14:51:40
【问题描述】:
我目前正在尝试使用 NumPy 库获取矩阵,但有一个问题我找不到解决方案
我目前有以下 numpy 数组
mat =
[[0. 1. 1. 0. 0. 0.]
[0. 0. 0. 0. 0. 0.]
[1. 1. 0. 0. 1. 0.]
[0. 0. 0. 0. 1. 1.]
[0. 0. 0. 1. 0. 1.]
[0. 0. 0. 1. 0. 0.]]
现在我想将每一行除以行的总和,但如果行的总和等于 0,我将其替换为 1/len(mat) 的行。我尝试使用以下代码:
for line in mat:
line /= np.sum(line)
mat[np.isnan(mat)] = 1/N
以下代码将返回:
[[0. 0.5 0.5 0. 0. 0. ]
[0.16666667 0.16666667 0.16666667 0.16666667 0.16666667 0.16666667]
[0.33333333 0.33333333 0. 0. 0.33333333 0. ]
[0. 0. 0. 0. 0.5 0.5 ]
[0. 0. 0. 0.5 0. 0.5 ]
[0. 0. 0. 1. 0. 0. ]]
这是我试图得到的正确结果,但它给出了RuntimeWarning: invalid value encountered in true_divide。
所以我想知道是否有更好的方法来获得正确的结果,所以我不必在每一行之后检查该行是否充满nan。 (此外,如果有一种方法可以立即将每行除以每行的总和,而不必使用for 循环。)
【问题讨论】:
标签: python arrays numpy matrix