我有一个生成器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 的强大功能,我觉得必须有一些更有效的方法来做到这一点。