首页 > 解决方案 > 使用列表中的值作为索引值来创建新的多维数组

问题描述

我这里有一个数组

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

另一个数组表示 A 中的列索引值

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

然后我想使用这些列值来索引数组 A 最终得到一个看起来像的数组

Cols_result = [[[1,2],[4,5],[7,8]],
               [[2,3],[5,6],[8,9]]]

Row_results = [[[1,2,3],[4,5,6]],
               [[4,5,6],[7,8,9]]]

我尝试使用np.take()但只能让它正常工作索引行值而不是列值

标签: pythonarrayspython-3.xnumpyindexing

解决方案


一种使用numpy.takewith 的方法numpy.swapaxes

A = np.array([[1,2,3],[4,5,6],[7,8,9]])
ind = np.array([[0,1],[1,2]])

行的输出:

np.take(A, ind, 0)

array([[[1, 2, 3],
        [4, 5, 6]],

       [[4, 5, 6],
        [7, 8, 9]]])

列的输出:

np.swapaxes(np.take(A, ind, 1), 0, 1)

array([[[1, 2],
        [4, 5],
        [7, 8]],

       [[2, 3],
        [5, 6],
        [8, 9]]])

推荐阅读