2
我试图动态地构造基于数组的值与numpy的2-d矩阵,如下所示:从数组值中动态填充numpy矩阵?
In [113]: A = np.zeros((5,5),dtype=bool)
In [114]: A
Out[114]: array([[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False],
[False, False, False, False, False]], dtype=bool)
In [116]: B = np.array([0,1,3,0,2])
In [117]: B
Out[117]: array([0, 1, 3, 0, 2])
现在,我想使用B的值赋给了第一将每行的n个值设置为A为True。对于这种A和B,正确的输出将是:
In [118]: A
Out[118]: array([[False, False, False, False, False],
[ True, False, False, False, False],
[ True, True, True, False, False],
[False, False, False, False, False],
[ True, True, False, False, False]], dtype=bool)
B的长度将总是等于A的行数,和B的值将总是小于或等于的数A的列.A的大小和B的值不断变化,所以我需要动态构建它们。
我确信这在numpy中有一个简单的( - )解决方案,但是我花了最后一个小时来对抗重复,瓦片和我能想到的任何其他变化。在我给自己脑震荡之前,任何人都可以帮助我吗? :)
编辑:我将需要做很多,所以速度将是一个问题。我能想出现在唯一的版本是这样的:
np.vstack([ [True]*x + [False]*(500-x) for x in B ])
但我相信,这将是缓慢的,由于for循环(我就会暂停,如果我有什么比较它)。
甜蜜的圣诞节,这是很好的!而且太快了......谢谢! – Winawer
请注意,您不需要实际构建'A'--我只是用它来检查形状。所有你需要的是数字'len(A [0])'和'B'。 – DSM