在索引处每行插入一个以上的值

Insert more than one value per row at index

我正在尝试向量化以下操作:

示例数据:

array_large = [[0,0,0,0,0],[0,0,0,0,0],[0,0,0,0,0]] 
array_small = [[1,2],[3,4],[5,6]] 

array_index = [[1],[0],[2]] #*random index

期望的输出:array_combined = [[0,1,2,0,0],[3,4,0,0,0],[0,0,5,6,0]]

到目前为止,我一直在让它与 apply_along_axis 一起工作 - 但我想知道是否有更有效的方法来解决这个问题。我似乎无法全神贯注于解决问题所需的索引。

我们可以在这里使用advanced indexing

array_large[np.arange(array_large.shape[0])[:,None], array_index+[0,1]] = array_small

或者更好,概括为任何形状 array_small 可能有:

i = np.arange(array_large.shape[0])[:,None]
j = array_index+np.arange(array_small.shape[1])
array_large[i,j] = array_small

print(array_large)

array([[0, 1, 2, 0, 0],
       [3, 4, 0, 0, 0],
       [0, 0, 5, 6, 0]])