Python多维表示法自动转置

时间:2017-08-02 21:20:48

标签: python numpy

我有以下最小例子:

a = np.zeros((5,5,5))
a[1,1,:] = [1,1,1,1,1]
print(a[1,:,range(4)])

我希望输出一个包含5行和4列的数组,其中我们在第二行有一个数组。相反,它是一个包含4行和5列的数组,第二列上有1列。这里发生了什么,我该怎么做才能得到我预期的输出?

1 个答案:

答案 0 :(得分:4)

这是混合基本和高级索引的示例,如https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html#combining-advanced-and-basic-indexing

中所述

切片尺寸已附加到末尾。

使用一个标量索引,这是那里所描述的模糊性的边缘情况。在以前的SO问题和一个或多个错误/问题中已经讨论过。

Numpy sub-array assignment with advanced, mixed indexing

在这种情况下,您可以使用切片替换范围,并获得预期的顺序:

In [215]: a[1,:,range(4)].shape
Out[215]: (4, 5)               # slice dimension last
In [216]: a[1,:,:4].shape
Out[216]: (5, 4)
In [219]: a[1][:,[0,1,3]].shape
Out[219]: (5, 3)