将一维数组的值添加到基于一维索引数组的二维数组

时间:2021-05-18 04:56:07

标签: python numpy

我正在使用 numpy 并且遇到了障碍,我认为这是一个简单的问题,可以使用索引来完成,但我仍然没有弄清楚。所以我有二维数组,从每一行我得到最小值的索引,我想要的是使用这个索引向二维数组添加值,这是一个例子

a = np.array([[9, 4, 9, 9],
              [1, 6, 4, 6],
              [8, 7, 1, 5],
              [8, 9, 2, 7]])

values = np.array([1, 2, 3, 4])

minimum = np.argmin(a, axis = 1) #To find the index of the minimum values

print(minimum) #minimum = [1, 0, 2, 2]

所以在二维数组的第一行和最小数组的第一个索引中我想添加值1,在二维数组的第二行中使用第二个索引,我想添加值2等等,我想要的输出应该是这样的。

output = [[9, 5, 9, 9],
          [3, 6, 4, 6],
          [8, 7, 4, 5],
          [8, 9, 6, 7]]

我尝试过,但失败了:

newarray = a[:, minimum] + values

newarray = [[ 5, 11, 12, 13],
            [ 7,  3,  7,  8],
            [ 8, 10,  4,  5],
            [10, 10,  5,  6]]

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

你很接近。试试这个:

newarray = a.copy()
newarray[np.arange(len(a)), minimum] += values