集合 R n \mathbb{R}^{n} Rn是所有 n n n元组的实数的集合。 用集合表示法是 R n = { ( x 1 , x 2 , x 3 , ⋯ , x n ) : x 1 , x 2 , x 3 , ⋯ , x n ∈ R } \mathbb{R}^{n}=\left\{\left(x_{1}, x_{2}, x_{3}, \cdots, x_{n}\right): x_{1}, x_{2}, x_{3}, \cdots, x_{n} \in \mathbb{R}\right\} Rn={(x1,x2,x3,⋯,xn):x1,x2,x3,⋯,xn∈R}。 例如,集合 R 3 \mathbb{R}^{3} R3表示三维空间中的实三元组 ( x , y , z ) (x, y, z) (x,y,z)坐标。
R n \mathbb{R}^{n} Rn中的向量是 R n \mathbb{R}^{n} Rn中的 n n n元组或点。 向量可以在行向量中水平地写(即向量的元素彼此相邻),或在列向量中垂直地写(即向量的元素彼此顶部)。 如果向量的上下文不明确,则通常意味着该向量是列向量。 向量的第 i i i个元素 v v v用 v i v_i vi表示。 列向量的转置是相同长度的行向量,而行向量的转置是列向量。 在数学中,转置由上标 T T T或 v T v^{T} vT表示。 零向量是 R n \mathbb{R}^{n} Rn中包含所有零的向量。
向量的范数是其长度的度量。 有许多方法可以根据所使用的度量(即,所选的距离公式)来定义向量的长度。 最常见的称为 L 2 L_{2} L2范数,它是根据您可能从小学时熟悉的距离公式计算得出的。 向量 v v v的 L 2 L_{2} L2范数由 ∥ v ∥ 2 \|v\|_{2} ∥v∥2表示, ∥ v ∥ 2 = ∑ i v i 2 \|v\|_{2}=\sqrt{\sum_{i} v_{i}^{2}} ∥v∥2=∑ivi2 。 有时也称为欧几里得长度,是指向量在一维,二维或三维空间中的“物理”长度。 L 1 L_{1} L1范数或“曼哈顿距离”的计算公式为 ∥ v ∥ 1 = ∑ i ∣ v i ∣ \|v\|_{1}=\sum_{i}\left|v_{i}\right| ∥v∥1=∑i∣vi∣,以纽约市的网格状道路结构命名。通常,向量的 p p p范数 L p L_{p} Lp为: L ∞ L_{\infty} L∞范数是 p p p范数,其中 p = ∞ p=\infty p=∞。 L ∞ L_{\infty} L∞范数写为 ∥ v ∥ ∞ \|v\|_{\infty} ∥v∥∞,它等于 v v v中的最大绝对值。
创建行向量和列向量,并显示向量的形状。
import numpy as np vector_row = np.array([[1, -5, 3, 2, 4]]) vector_column = np.array([[1], [2], [3], [4]]) print(vector_row.shape) print(vector_column.shape)
输出
(1, 5) (4, 1)
注意! 在Python中,行向量和列向量有些棘手。 从上面可以看到,为了获得1行4列或4行1列向量,我们必须使用list列表进行指定。 您可以定义np.array([1,2,3,4]),但很快您会发现它不包含有关行或列的信息。
将上面定义的行向量转置为列向量,并计算其 L 1 , L 2 L_{1}, L_{2} L1,L2和 L ∞ L_{\infty} L∞范数。验证向量的 L ∞ L_{\infty} L∞范数等于向量中元素的最大值。
from numpy.linalg import norm new_vector = vector_row.T print(new_vector) norm_1 = norm(new_vector, 1) norm_2 = norm(new_vector, 2) norm_inf = norm(new_vector, np.inf) print('L_1 is: %.1f'%norm_1) print('L_2 is: %.1f'%norm_2) print('L_inf is: %.1f'%norm_inf)
详情参阅http://viadean.com/py_num_alg.html