pythonnumpy模块中的索引

pythonnumpy模块中的索引,python,numpy,indexing,numpy-slicing,Python,Numpy,Indexing,Numpy Slicing,因此,我是python新手,并且学习了NumPy模块。 这是我的数组 c = np.array([[[ 0, 1, 2], [ 10, 12, 13]], [[100, 101, 102], [110, 112, 113]]]) 在上面的数组中,如果我尝试通过 c[:1,0:] 它产生的预期产出 # expected because print from initial to row 1,0

因此,我是python新手,并且学习了NumPy模块。 这是我的数组

c = np.array([[[  0,   1,   2],
               [ 10,  12,  13]],
              [[100, 101, 102],
               [110, 112, 113]]])
在上面的数组中,如果我尝试通过

c[:1,0:]
它产生的预期产出

# expected because print from initial to row 1,0 excluding row 1,0
 array([[[ 0,  1,  2],  
         [10, 12, 13]]]) 
array([[[10, 12, 13]]])
但现在当我试图通过

c[:1,1:]
它产生的输出

# expected because print from initial to row 1,0 excluding row 1,0
 array([[[ 0,  1,  2],  
         [10, 12, 13]]]) 
array([[[10, 12, 13]]])

为什么?

这是一个3D阵列。你可以跟我核对一下

print(c.shape)
这就产生了

(2, 2, 3)
3D阵列真的是你想要做的吗

如果是这样,如果用两个索引而不是三个索引对其进行切片,则意味着第三个索引隐式地
。所以
c[1,1]
相当于c[1,1,:],它相当于
c[1,1,0:3]

您的查询
c[:1,1://code>相当于
c[0,1,0:3]
:这是正确的结果

现在根据您的评论,我猜您希望重塑、过滤和重塑:

c.reshape(4, -1)[:3,:].reshape(1, 3, -1)
屈服

array([[[  0,   1,   2],
        [ 10,  12,  13],
        [100, 101, 102]]])

看起来数组中有两个数组,numpy将其读取为两行。这是你的意图吗?不,我想做的是,它应该从第一行到最后一行生成输出,消除1,1行,所以输出应该是:(第0,0行),(第0,1行),(第1,0行)请给出你的全部预期输出,以便我们能够理解你正在尝试做什么。我不知道你说“排除行1,0”是什么意思。数组([[0,1,2],[10,12,13],[[100101102]])预期输出是3d数组切片,所以如果我想生成类似数组的输出([[0,1,2],[10,12,13],[[100101102]]))那我该怎么办呢???在一次调用中是不可能的:您需要在以后将第一个
c[:1,:,:]
与第二个
c[1,:1,:]
。或者先将阵列重塑为2D,然后过滤,如果有意义的话,再重塑为3D。那么如果我想将它们组合起来,我该怎么做???把它们结合起来意味着什么?我更新了上面的答案。我认为你需要从形体的角度来思考。与串联阵列相比,重塑单个阵列的形状更好,因此采用了上述解决方案。请注意,组合数组是对其中一个维度的求和,只有当所有其他维度具有相同的长度时,组合数组才能起作用。