向量空间维度:计算一组向量所跨越的维度数量

一个函数,用于计算一组向量(以列的形式排列在矩阵中)所跨越的维度数量。

> from mlxtend.math import vectorspace_dimensionality

概述

给定一组向量,作为矩阵中的列排列,vectorspace_dimensionality 计算这些向量所张成的向量空间的维数(即超体积),使用的是格拉姆-施密特过程 [1]。特别地,由于格拉姆-施密特过程产生的向量要么为零,要么归一化为1(即,如果输入是一组线性无关的向量,则得到一个正交归一向量集),因此向量范数的总和对应于向量集的维数。

参考文献

示例 1 - 计算向量空间的维度

假设我们有两个基向量 $x=[1 \;\;\; 0]^T$ 和 $y=[0\;\;\; 1]^T$,它们作为矩阵中的列。由于这两个向量的线性独立性,它们所生成的空间自然是一个平面(二维空间):

import numpy as np
from mlxtend.math import vectorspace_dimensionality


a = np.array([[1, 0],
              [0, 1]])

vectorspace_dimensionality(a)

2

然而,如果一个向量是另一个向量的线性组合,那么很直观地可以看出,这组向量所描述的空间仅仅是一条直线,也就是1维空间:

b = np.array([[1, 2],
              [0, 0]])

vectorspace_dimensionality(a)

2

如果3个向量彼此之间都是线性无关的,那么向量空间的维度就是一个体积(即3D空间):

d = np.array([[1, 9,  1],
              [3, 2,  2],
              [5, 4,  3]])

vectorspace_dimensionality(d)

3

再次,如果一对向量线性相关(这里是第一行和第二行),这会将维度减少1:

c = np.array([[1, 2,  1],
              [3, 6,  2],
              [5, 10, 3]])

vectorspace_dimensionality(c)

2

API

vectorspace_dimensionality(ary)

Computes the hyper-volume spanned by a vector set

Parameters

Returns

Examples

For usage examples, please see https://rasbt.github.io/mlxtend/user_guide/math/vectorspace_dimensionality/