gpt4 book ai didi

python - 在具有一行零的矩阵中,如何将矩阵的相应对角线条目替换为一?

转载 作者:行者123 更新时间:2023-12-01 06:30:06 24 4
gpt4 key购买 nike

我有一个方阵 A,其值为 0 或 1,并且包含一行或多行零。对于每行 0,我希望将 A 的相应对角线条目替换为 1。

例如,假设

A=np.array([[0,1,1,0,1],[0,0,1,1,1],[0,0,0,0,0],[0,1,0,0,0],[0,0,0,0,0]])

第 3 行和第 5 行全为零。我希望将 A[3,3] 和 A[5,5] 设置为等于 1。

最佳答案

矩阵是:

>>> A
array([[0, 1, 1, 0, 1],
[0, 0, 1, 1, 1],
[0, 0, 0, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 0, 0, 0]])

我们可以找出所有行的总和:

>>> A.sum(axis=1)
array([3, 3, 0, 1, 0])

我们希望将与 0 和行对应的所有对角线设置为 1。

因此,可以进行以下操作:

>>> row_sums = A.sum(axis=1)
>>> A[row_sums == 0, row_sums == 0] = 1
>>> A
array([[0, 1, 1, 0, 1],
[0, 0, 1, 1, 1],
[0, 0, 1, 0, 0],
[0, 1, 0, 0, 0],
[0, 0, 0, 0, 1]])

请注意,这是有效的,因为对于所需的行,row_sums == 0True:

>>> row_sums == 0
array([False, False, True, False, True])

因此 A[row_sums == 0, row_sums == 0] 选择所需的元素。

关于python - 在具有一行零的矩阵中,如何将矩阵的相应对角线条目替换为一?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59952252/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com