python - 如何将 NumPy 数组标准化为单位向量?

我想将 NumPy 数组转换为单位向量。更具体地说,我正在寻找这个归一化函数的等效版本:

def normalize(v):
    norm = np.linalg.norm(v)
    if norm == 0: 
       return v
    return v / norm

这个函数处理向量v的范数为0的情况。

sklearnnumpy有没有类似的功能?

最佳答案

如果您使用 scikit-learn,您可以使用 sklearn.preprocessing.normalize :

import numpy as np
from sklearn.preprocessing import normalize

x = np.random.rand(1000)*10
norm1 = x / np.linalg.norm(x)
norm2 = normalize(x[:,np.newaxis], axis=0).ravel()
print np.all(norm1 == norm2)
# True

https://stackoverflow.com/questions/21030391/

相关文章:

c - 如何从 C 中通过 PID 在 Linux 中计算进程的 CPU 使用率?

linux - 是否可以在文件名中使用 "/"?

linux - 如何在行号处拆分文件

python - Python 中嵌套的 try/except block 是一种好的编程习惯吗?

python - Python 3 的图像库

python - 移动平均线或移动平均线

python - 是否可以使用 scikit-learn K-Means Clustering 指定

python - Python 'for' 循环中的范围

linux - grep 排除多个字符串

linux - POSIX 异步 I/O (AIO) 的现状如何?