我想从数组中获取除第一个和最后一个 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
会很好。
最佳答案
自己添加 len(oldArray)
而不是指望切片实现为您完成:
newArray = oldArray[nCut:len(oldArray)-nCut]
您还可以使用 -nCut 或 None
将 None
用作端点,否则它会是 0
:
newArray = oldArray[nCut:-nCut or None]
None
是切片端点的设置,如果你不写的话,所以这相当于 oldArray[nCut:]
当 nCut
为 0
。这不太容易理解,但也不那么冗长。在多维切片的情况下,或者如果数组的表达式比 oldArray
更复杂,它可能是更好的选择。
关于python - 获取除numpy数组的第一个和最后一个元素之外的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48553531/