在numpy数组中,切片时尺寸是如何更改的?解释下面的代码

在numpy数组中,切片时尺寸是如何更改的?解释下面的代码,numpy,multidimensional-array,Numpy,Multidimensional Array,在下面的代码中,转置起作用 b = numpy.arange(4,3) print(b[1:3,-1:) print(b[1:3,-1:].shape) print(b[1:3,-1:].T) print(b[1:3,-1:].T.shape) 在以下情况下,转置不起作用 b = numpy.arange(4,3) print(b[1:3,-1) print(b[1:3,-1].shape) print(b[1:3,-1].T) print(b[1:3,-1].T.shape) 根据是使用范

在下面的代码中,转置起作用

b = numpy.arange(4,3)
print(b[1:3,-1:)
print(b[1:3,-1:].shape)
print(b[1:3,-1:].T)
print(b[1:3,-1:].T.shape)
在以下情况下,转置不起作用

b = numpy.arange(4,3)
print(b[1:3,-1)
print(b[1:3,-1].shape)
print(b[1:3,-1].T)
print(b[1:3,-1].T.shape)

根据是使用范围还是标量进行切片,切片numpy数组的行为有所不同。第一个示例使用一个范围进行切片,因此尽管第二个维度的大小仅为1,但该维度仍然存在。第二个示例使用标量切片,在这种情况下,相应的维度被折叠。因此,在第二个示例中,您只剩下一个一维数组,它在转置下不做任何事情-它没有任何其他维度可交换。

根据您是使用范围还是标量进行切片,切片numpy数组的行为会有所不同。第一个示例使用一个范围进行切片,因此尽管第二个维度的大小仅为1,但该维度仍然存在。第二个示例使用标量切片,在这种情况下,相应的维度被折叠。因此,在第二个示例中,您只剩下一个一维数组,它在转置下不做任何事情-它没有任何其他维度可交换。

1D数组支持转置很好-刚好您对转置(交换最后两个轴)的期望与numpys(反转所有轴)匹配仅当ndim==2时。@Eric true-我正在耗尽内存,并假设由于这个问题它失败了。Updated1D数组支持转置很好-只有当ndim==2时,转置(交换最后两个轴)的期望值才与numpys(反转所有轴)匹配。@Eric true-我正在耗尽内存,并假设它由于这个问题而失败。如果您显示了一些结果,甚至错误(或者其他方面显示转置如何不起作用),那么UpdatedIt将是一个不错的选择(更礼貌地说)。有经验的程序员可以猜测甚至测试你的代码,但不是每个人都有这个选择。我练习python的服务器没有浏览器。我用来发布问题的终端没有python。我不是故意漏掉报告输出。如果您显示一些结果,甚至错误(或其他方面显示转置如何不起作用),那将很好(作为一个更礼貌的例子)。有经验的程序员可以猜测甚至测试你的代码,但不是每个人都有这个选择。我练习python的服务器没有浏览器。我用来发布问题的终端没有python。我不是故意漏掉报告结果。