Partager via


vector_normalize Fonction

S’applique à :check marqué oui Databricks Runtime 18.1 et versions ultérieures

Normalise un vecteur en longueur d’unité à l’aide du degré de norme spécifié.

Syntaxe

vector_normalize(vector [, degree ])

Arguments

  • vecteur : ARRAY<FLOAT> expression représentant le vecteur.
  • degré : facultatif. Valeur FLOAT spécifiant le type de norme ; est définie par défaut sur 2,0 (norme euclide). Valeurs prises en charge :
    • 1.0 — Norme L1 : valeurs absolues des composants à 1
    • 2.0 — Norme L2 : la longueur euclide est égale à 1
    • float('inf') — L∞ norme : le composant absolu maximal est égal à 1

Retours

Représentant ARRAY<FLOAT> le vecteur normalisé avec la même direction que l’entrée, mais avec la norme 1,0 sous le degré spécifié.

Retourne un tableau vide pour les vecteurs vides. Retourne NULL si le vecteur a une norme zéro (par exemple, tous les zéros) ou si l’entrée est NULL ou contient NULL.

Remarques

  • Seul ARRAY<FLOAT> est pris en charge ; d’autres types tels que ARRAY<DOUBLE> ou ARRAY<DECIMAL> déclenchent une erreur. Une valeur non prise en charge degree déclenche INVALID_VECTOR_NORM_DEGREE.
  • La normalisation L2 est la norme dans les charges de travail d’incorporation denses.

Conditions de l’erreur

Exemples

-- L2 normalization (Euclidean) - 3-4-5 triangle
> SELECT vector_normalize(array(3.0f, 4.0f), 2.0f);
  [0.6, 0.8]

-- Verify L2-normalized vector has unit norm
> SELECT vector_norm(vector_normalize(array(1.0f, 2.0f, 3.0f), 2.0f), 2.0f);
  1.0

-- Zero vector returns NULL
> SELECT vector_normalize(array(0.0f, 0.0f, 0.0f), 2.0f);
  NULL