首页 > 解决方案 > 类似于 numpy.take 的函数,用于索引 out 参数

问题描述

在 的文档numpy.take,表示a根据indices和进行索引axis,然后将结果可选地存储在out参数中。是否存在执行索引的函数out?使用花哨的索引它会是这样的:

out[:, :, indices, :] = a

在这里,我假设axis=2但在我的情况下,我事先并不知道轴。使用一维布尔掩码而不是索引的解决方案也是可以接受的。

标签: pythonnumpynumpy-indexing

解决方案


您可以像这样使用交换轴:

>>> A = np.arange(24).reshape(2,3,4)
>>> out = np.empty_like(A)
>>> I = [2,0,1]
>>> axis = 1
>>> out.swapaxes(0, axis)[I] = A.swapaxes(0, axis)
>>> out                                                                                                             
array([[[ 4,  5,  6,  7],                                                                                           
        [ 8,  9, 10, 11],                                                                                           
        [ 0,  1,  2,  3]],                                                                                          

       [[16, 17, 18, 19],                                                                                           
        [20, 21, 22, 23],                                                                                           
        [12, 13, 14, 15]]])                                                                                         

推荐阅读