Python 任意维numpy数组切片

Python 任意维numpy数组切片,python,numpy,dimension,Python,Numpy,Dimension,假设我创建一个任意维(n)的数组 有一些代码(在本例中跳过)来填充数组的值 现在,尝试访问数组的一些值 >>> TheArray[0:2,0:2,0:2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0] array([[[ 0., 0.], [ 0., 0.]], [[ 0., 0.], [ 0., 0.]]]) 如何使语法的0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0

假设我创建一个任意维(n)的数组

有一些代码(在本例中跳过)来填充数组的值

现在,尝试访问数组的一些值

>>> TheArray[0:2,0:2,0:2,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]

array([[[ 0.,  0.],
        [ 0.,  0.]],

       [[ 0.,  0.],
        [ 0.,  0.]]])
如何使语法的
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
部分通用为n?

一种方法是:

我想你可以摆脱硬编码的-3

In [69]: m[(s_[:2, :2, :2] + (0,)*m.ndim)[:m.ndim]]
Out[69]: 
array([[[ 0,  8],
        [16, 24]],

       [[32, 40],
        [48, 56]]])

但老实说,如果需要的话,我可能会将其封装在函数中。

谢谢。python和numpy文档不够清晰,无法让我得出这个结论,但是在提供了您的示例之后,我能够将python和numpy文档拼凑在一起来理解这一点。
In [55]: m = arange(2**6).reshape([2]*6)

In [56]: m.shape
Out[56]: (2, 2, 2, 2, 2, 2)

In [57]: m[:2,:2,:2,0,0,0]
Out[57]: 
array([[[ 0,  8],
        [16, 24]],

       [[32, 40],
        [48, 56]]])

In [58]: m[s_[:2, :2, :2] + (0,)*(n-3)]
Out[58]: 
array([[[ 0,  8],
        [16, 24]],

       [[32, 40],
        [48, 56]]])
In [69]: m[(s_[:2, :2, :2] + (0,)*m.ndim)[:m.ndim]]
Out[69]: 
array([[[ 0,  8],
        [16, 24]],

       [[32, 40],
        [48, 56]]])