Python numpy三维切片、索引和省略号是如何工作的?
我很难理解numpy的一些切片和索引是如何工作的 第一个是: 据报道, 如果选择元组中的对象数小于N,则 :假定用于任何后续尺寸 那么这是否意味着[[1]、[2]、[3]、[[4]、[5]、[6]]本身就是一个2x3数组 你是怎么做到的Python numpy三维切片、索引和省略号是如何工作的?,python,arrays,numpy,Python,Arrays,Numpy,我很难理解numpy的一些切片和索引是如何工作的 第一个是: 据报道, 如果选择元组中的对象数小于N,则 :假定用于任何后续尺寸 那么这是否意味着[[1]、[2]、[3]、[[4]、[5]、[6]]本身就是一个2x3数组 你是怎么做到的 x[1:2] 返回 array([[[4], [5], [6]]]) ? 二是省略, 省略号展开为:进行选择所需的对象数 与x.ndim长度相同的元组。可能只有一个 省略号出现 为什么[…,0]意味着什么 对于第一个问题,这意
x[1:2]
返回
array([[[4],
[5],
[6]]])
?
二是省略,
省略号展开为:进行选择所需的对象数
与x.ndim长度相同的元组。可能只有一个
省略号出现
为什么[…,0]意味着什么 对于第一个问题,这意味着形状为2,3,1的x有两个3x1阵列的切片 这就是为什么你只得到第一片 关于你的第二个问题
In [45]: x.ndim
Out[45]: 3
所以,当您使用省略号时,它只是将数组延伸到大小3
In [47]: x[...,0]
Out[47]:
array([[1, 2, 3],
[4, 5, 6]])
上面的代码意味着,从数组x中获取两个切片,并按行拉伸它
但是如果你这样做了
In [49]: x[0, ..., 0]
Out[49]: array([1, 2, 3])
在这里,您只需从x中取出第一个切片并按行拉伸即可。现在,当您执行x[1:2]时,它只会将第一个切片交给您 我的问题是它不应该是第二片吗。因为输出是片2
In [42]: x[1:2]
Out[42]:
array([[[4],
[5],
[6]]])
非常感谢你的解释,它真的很有帮助
In [45]: x.ndim
Out[45]: 3
In [47]: x[...,0]
Out[47]:
array([[1, 2, 3],
[4, 5, 6]])
In [49]: x[0, ..., 0]
Out[49]: array([1, 2, 3])
In [42]: x[1:2]
Out[42]:
array([[[4],
[5],
[6]]])