【发布时间】:2015-10-09 02:31:04
【问题描述】:
是否有任何函数可以在 numpy 或其他 python 库中随机生成非负正交矩阵?这里的非负表示正交矩阵中的所有元素都必须是非负的。
【问题讨论】:
是否有任何函数可以在 numpy 或其他 python 库中随机生成非负正交矩阵?这里的非负表示正交矩阵中的所有元素都必须是非负的。
【问题讨论】:
如果给定 R^(nxn) 中的非负正交矩阵,A,那么 A 不是 n! n阶排列矩阵(source)?如果是这样,那么你的任务就减少到只计算一个随机排列矩阵。这很简单:
In [1]: import numpy as np
In [2]: def rand_perm_mat(N):
I = np.eye(N)
p = np.random.permutation(np.arange(N))
return I[p]
In [3]: A = rand_perm_mat(5)
In [4]: A
Out[4]:
array([[ 0., 0., 0., 0., 1.],
[ 0., 1., 0., 0., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 1., 0.],
[ 1., 0., 0., 0., 0.]])
In [5]: A.dot(A.T)
Out[5]:
array([[ 1., 0., 0., 0., 0.],
[ 0., 1., 0., 0., 0.],
[ 0., 0., 1., 0., 0.],
[ 0., 0., 0., 1., 0.],
[ 0., 0., 0., 0., 1.]])
【讨论】: