python - 从另一个数组更新 numpy 二维数组索引

标签 python arrays numpy

是否有一种 numpy 方法可以在不使用循环的情况下执行以下操作?

A = np.array([[1,1],[2,2],[3,3],[4,4],[5,5]])
I = np.array([0, 1, 0, 1, 1])
V = np.array([6, 6, 6, 6, 6])

我想更新A,使其在I指定的相应索引中具有6。所以A变成...

A = np.array([[6,1],[2,6],[6,3],[4,6],[5,6]])

尝试了以下方法,但没有成功..

A[I] = V
A[:,I] = V

最佳答案

尝试:A[np.arange(len(A)), I] = V:

In [15]: import numpy as np                                                                                              

In [16]: A = np.array([[1,1],[2,2],[3,3],[4,4],[5,5]])                                                                   

In [17]: I = np.array([0, 1, 0, 1, 1])                                                                                   

In [18]: V = np.array([6, 6, 6, 6, 6])                                                                                   

In [19]: A[np.arange(len(A)), I] = V                                                                                     

In [20]: A                                                                                                               
Out[20]: 
array([[6, 1],
       [2, 6],
       [6, 3],
       [4, 6],
       [5, 6]])

关于python - 从另一个数组更新 numpy 二维数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60358835/

相关文章:

python - 计算数据框中特定值的出现次数,其中所有可能的值都由列表定义

python - 按键对列表进行排序

php - 将越来越多的数字添加到 php 数组中(这样我以后就可以用 php echo 调用它)

python - 将 n 个最大元素保留在矩阵的行或列中的可靠方法

python - numpy.where 以及条件中的数据位置

python - 使用 Python Pandas 对 csv 文件中的行进行排序

C# 到 Python(不是 IronPython)发送和接收数组、Into、String、Decimals

python - 在 n 维中扩展 numpy 数组

java - 从文本文件中查找平均值

python - 类型错误 : unsupported operand type(s) for -: 'numpy.ndarray' and 'numpy.ndarray'