gpt4 book ai didi

python - 有没有一种有效的方法来生成对称随机矩阵?

转载 作者:行者123 更新时间:2023-11-28 20:55:30 24 4
gpt4 key购买 nike

是否有一种有效的方法(使用 numpy)来生成一个对称随机矩阵,其元素均匀分布在 [0,1) 中?

最佳答案

令 U 为均匀分布随机数的方阵。然后,您可以将 U 的下三角部分与自身转置(仅包括对角线一次)相加,以获得与 U 具有相同分布的随机数的对称矩阵。

import numpy as np 

U = np.random.uniform(low=0, high=1.0, size=(1000, 1000))
S = np.tril(U) + np.tril(U, -1).T

print(np.histogram(S.flatten()))
print(np.histogram(S[0,:]))
print(np.histogram(S[:,0]))

np.random.uniform 的文档将整个矩阵以及任何行或列均匀分布在 [0,1) 中

我得到的速度明智

%timeit U = np.random.uniform(low=0, high=1.0, size=(1000, 1000))
10.6 ms ± 46.5 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

%timeit S = np.tril(U) + np.tril(U, -1).T
5.76 ms ± 75.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

正如其他人所说,您也可以这样做

S = (U + U.T) / 2

为了获得对称性,但这会给你非对角线的三角分布随机数,因为你要对两个均匀随机变量求和。

关于python - 有没有一种有效的方法来生成对称随机矩阵?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56605189/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com