我有一个2D向量的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)
我能否使用 nonzero
仅将除法应用于 x[i]
,使得 nonzero[i]
为 True
?(我可以编写循环来实现此操作 - 只是想知道是否有 numpy 的方法可以完成此操作)
或者,在跳过所有零向量的情况下,是否有更好的规范化向量数组的方法?
np.linalg.norm
有第二个参数axis
,您可以使用它来提高速度,如此处所述:https://dev59.com/8msz5IYBdhLWcg3wrJsx#19794741 - 0 _