我有一个生成器g,我事先知道它会返回n项目。每个项目i的结构如下:
t_i:(e_i, b_i)
t_i是一个可变大小的元组,可以包含 list 的任何有序子序列(1,...,n)。例如,对于n=6、t_1=(1, 3, 4)等t_2=(2, 4, 6)。
e_i是一个数字(浮点数/整数),并且b_i是一个布尔值(这里没有真正使用)。
n x n我想知道使用以下方式构造矩阵(使用 numpy 数组)的最有效方法是g什么:
矩阵的每一行i对应t_i:(e_i, b_i)于: 1. 位置出现的行元素(在矩阵中)t_i应该使用e_i; 2. 其他行元素默认为0.
因此,例如,假设矩阵2的那一行8 x 8对应于 item t_2:(e_2, b_2) = (2, 4, 6):(13, True),则该行应设置为(0, 13, 0, 13, 0, 13, 0, 0)。t_2请注意,我们在这里(或t_i一般情况下)没有对数字使用零索引。
一个明显的方法是提前构造一个n x n矩阵,然后遍历生成器返回的每一个item,根据item依次设置每一行。但鉴于 Python 的强大功能,numpy尤其是 Python 的强大功能,我觉得必须有一些更有效的方法来做到这一点。