【问题标题】:Get all except first and last n elements of a numpy array获取除numpy数组的第一个和最后n个元素之外的所有元素
【发布时间】:2018-07-11 05:36:56
【问题描述】:

我想从数组中获取除第一个和最后一个 n 元素之外的所有元素,我可以在不使用 if 语句的情况下保持 n=0 的一致行为的同时做到这一点吗? (Python 2.7)。 这可以满足我的要求,但如果 nCut=0 就会崩溃:

nCut = 3
newArray = oldArray[nCut:-nCut]

这更接近,但不包括最后一个元素(实际上也只是一个稍微隐藏的 if 语句)

newArray = oldArray[nCut:-nCut-1*(nCut<1)]

我必须对我从文件中加载的一堆数组执行此操作,因此对于 n=0 的情况,没有一个大的丑陋翻倍 if 会很好。

【问题讨论】:

    标签: python arrays python-2.7 numpy


    【解决方案1】:

    自己添加len(oldArray),而不是指望切片实现为您完成:

    newArray = oldArray[nCut:len(oldArray)-nCut]
    

    您也可以使用-nCut or None 来使用None 作为端点,否则它会是0

    newArray = oldArray[nCut:-nCut or None]
    

    None 是切片端点设置的值,如果你不写一个,所以当nCut0 时,这相当于oldArray[nCut:]。这不太容易理解,但也不太冗长。在多维切片的情况下,或者如果数组的表达式比 oldArray 更复杂,它可能是更好的选择。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-11
      • 1970-01-01
      • 1970-01-01
      • 2023-01-05
      相关资源
      最近更新 更多