如何用另一个数组中的值替换包含索引的数组?

时间:2014-06-21 20:48:14

标签: python python-2.7 numpy

我有一个包含数组a的索引的数组b。我想在数组b中插入具有相同索引的另一个数组c的值。

import numpy as np
a1=np.array([[1, 3, 5, 2, 3],[7, 6, 5, 2, 4],[2, 0, 5, 6, 4]])
a=a1.argsort()[:,:2]

##这将创建一个索引为2个最小值a1

的数组
  a
[[0 3]
 [3 4]
 [1 0]]
b=np.array([[1],[2],[3],[4],[5],[6]])

现在我想将a中的值0替换为b中的1; 3与4等等

我尝试使用:

[a[index]]=b[index]

但它显然不是正确的方法,因为数组a将这些索引作为值处理

请帮助

1 个答案:

答案 0 :(得分:2)

如果我理解正确,您可以使用展平版a来索引b

result = b.ravel()[a.ravel()]

[1, 4, 4, 5, 2, 1]

如果您需要与a相同的尺寸,则可以重塑它:

result = result.reshape(a.shape)

[[1, 4]
 [4, 5]
 [2, 1]]