如何在使用numpy时忽略索引数组中的越界值?

4
我需要使用索引数组将一个数组赋值给另一个数组。 但是一些值超出了范围...
a = np.array([0, 1, 2, 3, 4])
b = np.array([10, 11, 12, 13, 14])
indexes = np.array([0, 2, 3, 5, 6])

ab大小相同。如果我使用a[indexes] = b,它会抛出IndexError异常。我希望它忽略超出范围的值5和6,以便a变为[10, 1, 11, 12, 4]

我尝试了indexes[indexes > b.size()] = 0,但这会破坏索引0处的值。应该如何解决?

编辑

索引可能不一定是有序的。例如:

indexes = np.array([2, 3, 0, 5, 6])

a 应变为 np.array([12, 1, 10, 11, 4])


在您的编辑中,请问预期结果a中的11(索引1处的b)来自哪里? - Scott Boston
b 应该与索引匹配,因此 b[1] 应该对应 a[index[1]]。 - y1 r0 kh
1个回答

4
您可以过滤掉那些无效的索引:
indexes = indexes[indexes < len(a)]

a[indexes] = b[indexes]

输出:

array([10,  1, 12, 13,  4])

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接