我有一个大的2D阵列(A)和一个列数相同但行数较少的较小的2D阵列(B)。我想把我的小数组的行添加到我的大数组的行中,但是我不想影响中间的行。我有一个索引数组,它详细描述了我想要添加的行,像这样:
A = np.array([[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0],
[0, 0, 0, 0]])
B = np.array([[1, 3, 2, 4],
[6, 2, 5, 1],
[2, 8, 1, 4]])
Index = np.array([1, 4, 5])
Result = np.array([[0, 0, 0, 0],
[1, 3, 2, 4],
[0, 0, 0, 0],
[0, 0, 0, 0],
[6, 2, 5, 1],
[2, 8, 1, 4],
[0, 0, 0, 0]])
我的真实的数组没有任何类型的模式,可以切片的行,我的大数组A不一定是一堆零,所以我确实需要添加它们。
我原以为np.apply_沿着_axis会很有用,但使用它有两点我想不通。一个是我的索引没有聚集在一起,我不知道如何告诉apply_沿着_axis“跳过”一个切片。第二,我只是用take_沿着_axis遍历了我的大数组A,所以我不知道如何在我提供的函数中告诉它应该添加数组B的哪一行。我可以这样做,还是有别的办法?
1条答案
按热度按时间km0tfn4u1#
使用
np.add.at()
。或者,您可以这样做:
(Note:如果
Index
包含重复项,则此操作无效。)