我有一个数组:
arr = np.array([[ 5.1, 3.5, 1.4, 0.2],
[ 4.6, 3.1, 1.5, 0.2],
[ 5. , 3.6, 1.4, 0.2]])
和一个索引数组:
index_arr = np.array([True, False, False, True, True])
和零的空矩阵:
output = np.array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
有没有一种方法可以使用numpy函数/索引技巧将它们组合在一起,从而使数组的行根据索引数组替换零矩阵中的行?也就是说,我最终将其作为最终输出
>>> array([[ 5.1, 3.5, 1.4, 0.2],
[ 0., 0., 0., 0. ],
[ 0., 0., 0., 0. ],
[ 4.6, 3.1, 1.5, 0.2],
[ 5. , 3.6, 1.4, 0.2]])
如果不清楚我要在这里做什么:输出的中间两行为空,因为其中的第二个和第三个条目index_arr
为False
。将的第一行arr
复制到输出的第一行中,将的最后两行arr
复制到输出的最后两行中,以与中的True
值对齐index_arr
。
您可以将逻辑向量索引用于子集和分配:
output[index_arr] = arr
#array([[ 5.1, 3.5, 1.4, 0.2],
# [ 0. , 0. , 0. , 0. ],
# [ 0. , 0. , 0. , 0. ],
# [ 4.6, 3.1, 1.5, 0.2],
# [ 5. , 3.6, 1.4, 0.2]])
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句