首先,对于将来可能遇到这个问题的其他人:如果您确实有数据,并且想要估计协方差矩阵,正如一些人所指出的,请使用np.cov或类似的方法。
从模式构建数组
但是,您的问题是如何在给定一些预定义规则的情况下构建一个大型矩阵。为了澄清注释中的一些混乱:您的问题似乎不是关于估计协方差矩阵,而是关于指定一个协方差矩阵。换言之,您将询问如何在给定一些预定义规则的情况下构建大型数组。
哪种方法最有效取决于你在做什么。在这种情况下,大多数性能技巧都涉及到在执行计算时利用对称性。(例如,一行是否相同?)
在不知道自己在做什么的情况下,很难说出任何具体的事情。因此,我将集中讨论如何做这类事情。(注:我刚刚注意到你的编辑。我将包括一个布朗尼桥的例子在一点点…)
常量(或简单)行/列
最基本的情况是输出数组中的常量行或列。使用切片语法很容易创建数组并将值赋给列或行:import numpy as np
num_vars = 10**4
cov = np.zeros((num_vars, num_vars), dtype=float)
要设置整列/整行:# Third column will be all 9's
cov[:,2] = 9
# Second row will be all 1's (will overwrite the 9 in col3)
cov[1,:] = 1
也可以将数组分配给列/行:# 5th row will have random values
cov[4,:] = np.random.random(num_vars)
# 6th