Python 仅索引最后一个轴的操作

Python 仅索引最后一个轴的操作,python,numpy,Python,Numpy,我有一个三维向量数组。数组的维数是任意的:它可以是一个(N×3)、两个(M×N×3)、三个(K×M×N×3)等等。我需要对向量的两个分量进行运算,同时保留其他维数 例如,如果我知道它是三维的,我可以执行以下操作: R=numpy.arctan2(A[:,:,:,1],A[:,:,:,0]) 这给了我一个标量值的三维数组 现在,为了能够在任意数量的维度上实现这一点。除最后一个维度外,我需要对所有其他维度进行切片。到目前为止,我可以用这个: s=[numpy.s_[:]]*(len(A.shape

我有一个三维向量数组。数组的维数是任意的:它可以是一个(N×3)、两个(M×N×3)、三个(K×M×N×3)等等。我需要对向量的两个分量进行运算,同时保留其他维数

例如,如果我知道它是三维的,我可以执行以下操作:

R=numpy.arctan2(A[:,:,:,1],A[:,:,:,0])
这给了我一个标量值的三维数组

现在,为了能够在任意数量的维度上实现这一点。除最后一个维度外,我需要对所有其他维度进行切片。到目前为止,我可以用这个:

s=[numpy.s_[:]]*(len(A.shape)-1)
R=numpy.arctan2(A[s+[1]],A[s+[0]]

这甚至适用于单个向量。有没有一种更能达到上述目的的方法?

我找到了一种更好的方法。这对我有用

R = numpy.arctan2(A[...,1],A[...,0])

就这样!我知道有类似的内置功能,但我在浏览numpy文档时遇到了麻烦。有时重要信息在用户指南中,有时在参考资料中……尽管两者都提到了省略号:在标题中使用pIndexing(而不是广播)是一个更好的术语。