是否有任何函数可以在numpy或其他python库中随机生成非负正交矩阵?这里的非负意味着该正交矩阵中的所有元素都必须是非负的。
答案 0 :(得分:2)
如果给定R ^(nxn)中的非负正交矩阵A
,那么A
就是其中之一,这不是真的! 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.]])