我有一个长度为N的向量D和一个形状为N * M的矩阵A.矢量D有一些零元素。我正在做这个操作:
D = D.reshape(-1,1)
A / D
然而,由于D中的某些元素为零,我得零除错。我需要的是在零除以而不是引发错误时将零置零。怎么做?
E.g。我的尝试:
A = [ [0,1,0,0,0,0],
[0,0,1,1,0,0],
[1,0,0,1,1,0],
[0,0,0,0,1,0],
[0,0,0,0,0,0],
[0,0,0,0,1,0]
]
A = np.array(A, dtype='float')
D = np.sum(A, axis=1)
D = D.reshape(-1, 1)
A = np.where(D != 0, A / D, 0)
RuntimeWarning: invalid value encountered in divide
A = np.where(D != 0, A / D, 0)
答案 0 :(得分:1)
您可以为D
使用屏蔽数组,例如:
D = np.ma.array(D, mask=(D==0))
当您使用蒙版数组执行计算时,只会考虑非蒙版值。
答案 1 :(得分:0)
为什么不使用try-catch块?像
这样的东西 try:
some_var = A/D
except ZeroDivisionError:
some_var = 0