python - 处理 numpy 数组规范化中的零

标签 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)

我能否以某种方式使用 nonzero 将除法仅应用于 x[i] 以便 nonzero[i]True ? (我可以为此编写一个循环 - 只是想知道是否有一种 numpy 的方式来做到这一点)

或者是否有更好的方法规范化向量数组,跳过过程中的所有零向量?

最佳答案

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

nonzero = norms > 0
x[nonzero] /= norms[nonzero]

关于python - 处理 numpy 数组规范化中的零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17769341/

相关文章:

python - 更新 tkinter 标签

python - 在 Python 中使用 Loops 修饰多个导入函数

python - 是否有一个很好的正则表达式来对收到的 SIP 邀请进行多行匹配?

python - 将列表列表转换为数据框

python - 从集合创建一个 numpy 数组

python - 将 np.array 索引传递给函数

python - 如何在所有日子的给定时间在服务器上运行 Python 脚本?

python 2.7 : How to get the list of static variables in a class?

Python 插入零?

python - 在 astropy 表列中插入一个数组