gpt4 book ai didi

python - 对 NumPy 数组执行操作,但从这些操作中屏蔽沿对角线的值

转载 作者:太空宇宙 更新时间:2023-11-04 11:05:11 25 4
gpt4 key购买 nike

因为我可以在数组上执行操作,所以在对角线上什么都不做计算使得除对角线以外的所有

array ([[0.,  1.37, 1.,   1.37, 1.,   1.37, 1.]
[1.37, 0. , 1.37, 1.73, 2.37, 1.73, 1.37]
[1. , 1.37, 0. , 1.37, 2. , 2.37, 2. ]
[1.37, 1.73, 1.37, 0. , 1.37, 1.73, 2.37]
[1. , 2.37, 2. , 1.37, 0. , 1.37, 2. ]
[1.37, 1.73, 2.37, 1.73, 1.37, 0. , 1.37]
[1. , 1.37, 2. , 2.37, 2. , 1.37, 0. ]])

避免 NaN 值,但在所有响应中保留对角线上的值零

最佳答案

我想知道屏蔽数组是否可以做你想做的事,例如,

import numpy as NP
A = NP.random.random_integers(0, 9, 16).reshape(4, 4)
dg = NP.r_[ [NP.nan] * 4 ] # proper syntax is 'nan' not 'NaN'
dg = NP.diag(dg)
A += dg # a 4x4 array w/ NaNs down the main diagonal
NP.sum(A, axis=1) # doesn't work, gives: array([ NaN, NaN, NaN, NaN])
from numpy import ma as MA
Am = **MA.masked_invalid**(A)
NP.sum(Am, axis=1) # now it works (treats 'nan' as 0)

当然,另一种方法是先将 NaN 转换为 0,然后屏蔽 0:

NP.nan_to_num(A)
MA.masked_equal(A, 0)

最后,在一个步骤中屏蔽和转换 NaN 通常很有效:

MA.fix_invalid(A)

非常简单,请记住“ma”可能还不在您的命名空间中,而且这些函数处理“NaN”“infs”,这通常是您想要的。

关于python - 对 NumPy 数组执行操作,但从这些操作中屏蔽沿对角线的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1803860/

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