首页 > 解决方案 > 在 numpy 中获取互补切片的最简洁方法

问题描述

给出numpy.array切片补码的最简洁(紧凑)方式是什么?与之前的帖子相反,我没有考虑速度,而是考虑了易用性/可读性/通用性。

以数组为例A=np.array([1,2,3,4,5,6])。我正在寻找 的补码A[start:stop],例如,A[2:4]它的补码是"comp of A[2:4]"=array([1,2,3,6])。我正在寻找一种无论内容类型如何都有效的解决方案。所以 A 还可以包含数组 str ,理想情况下,原则上可以是正常 [start:stop] 切片操作也适用的任何维度。

在不声称一般性的情况下,这是我目前使用的:

def comp(A,start,stop):
    if A.ndim == 1:
        out = np.hstack((A[0:start],A[stop:]))
    else:
        out = np.vstack((A[0:start],A[stop:]))
    return out

标签: pythonnumpyslice

解决方案


np.r_这是生成这些索引然后索引到输入数组的一种简洁方法-

A[np.r_[:start,stop:len(A)]]

推荐阅读