使用[:]语法的numpy维度问题

时间:2013-11-19 11:07:08

标签: python arrays numpy syntax indexing

我有一个问题......

我使用numpy.array创建了shape=(4,128,256,256)。 如果我打印出以下内容:

print shape(x[:][3][1][:]) 

输出为shape=(256,256),而不是我预期的(4,256) ... 声明

print x[:][4][1][1]

产生错误:index out of bounds

经过一些尝试和错误后,在我看来,如果另一个带有离散值的参数跟在后面,则[:]不起作用......

我通过使用循环解决了当前的问题,但是对于将来我想了解我做错了什么......

感谢您的帮助......

1 个答案:

答案 0 :(得分:2)

要获得你想要的东西你必须正确地进行缩进:

x[:, 3, 1, :].shape => (4, 256)

numpy数组不是标准列表

如果您执行x[:][3][1][:],则实际执行以下操作:

x1 = x[:]  # get the whole array
x2 = x1[3] # get the fourth element along the first dimension
x2.shape => (128, 256, 256)
x3 = x2[1] # get the second element along the first dimension of `x2`
x3.shape => (256, 256)
x3[:]   # get all `x3`

有关索引编制的更多说明,请参阅the numpy documentation


关于

时的错误
x[:][4][1][1]

您得到index out of bounds,因为x[:]是整个数组,第一维是4,所以x[:][4]不存在