【发布时间】:2013-07-21 05:21:41
【问题描述】:
我有一个 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.linalp.norm有第二个参数axis可用于提高速度,如下所述:stackoverflow.com/a/19794741/1959808