处理 numpy 数组归一化中的零

M-V*_*M-V 6 python numpy

我有一个二维向量的 numpy 数组,我正在尝试将其标准化如下。该数组可以具有幅度为零的向量。

x = np.array([[0.0, 0.0], [1.0, 0.0]])
norms = np.array([np.linalg.norm(a) for a in x])

>>> x/norms
array([[ nan,   0.],
       [ inf,   0.]])

>>> nonzero = norms > 0.0
>>> nonzero
array([False,  True], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

我能以某种方式使用nonzero该师只适用于x[i]这样nonzero[i]True?(我可以为此编写一个循环 - 只是想知道是否有一种麻木的方法来做到这一点)

或者有没有更好的方法来规范化向量数组,在这个过程中跳过所有零向量?

Jai*_*ime 6

如果可以就地进行规范化,则可以像这样使用布尔索引数组:

nonzero = norms > 0
x[nonzero] /= norms[nonzero]
Run Code Online (Sandbox Code Playgroud)