python - 使用 2D 数组进行 2D Numpy 数组索引

标签 python numpy

  position_array = np.array([[1,2]
                      [0,1]
                      [0,2]])

  original_array = np.array([[5,6,7]
                             [7,8,2]
                             [10,6,2]])

result_i_want = np.array([[6,7]
                        [7,2]
                        [10,2]])

如何做到这一点?

从original_array获取一个新数组并使用position_array作为索引??

例如,当position_array的第一行是[1,2]时,意味着从original_array的第一行获取第1列和第2列

如何做到这个最简单的方法?

最佳答案

你想要np.take_along_axis ,设置axis=1:

np.take_along_axis(original_array, position_array, axis=1)

array([[ 6,  7],
       [ 7,  8],
       [10,  2]])

或者您也可以使用advanced indexing :

original_array[np.arange(original_array.shape[0])[:,None], position_array]

array([[ 6,  7],
       [ 7,  8],
       [10,  2]])

关于python - 使用 2D 数组进行 2D Numpy 数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57737240/

相关文章:

python - 选择 numpy 数组中的行

python - 投票分类器导致转换 Numpy 类型错误

python - 矩阵python的向量(positionx,positiony,value)

python - 从多个其他列表创建 n 项长播放列表列表

python - 了解 Tensorflow 中权重和偏差的初始化

python - python中堆使用什么数据结构

Python:折线周围的坐标框

python - scipy.optimize.curve_fit : not a proper array of floats error/object too deep for desired array

python - 如何将节点名称分配给矩阵 Networkx?

python - 如何根据 python 中 2 列的条件创建具有值的新数据框列?