2015-10-18 157 views
0

只见一段代码如下:切片在numpy的阵列

a = np.zeros((10,10,10)) 
b = a[:,:,::-1] 

b是相同的。该切片的目的是什么?

+5

这基本上颠倒了沿着最后一个轴的元素顺序。当你在一个全零的数组上使用它时,你将不会注意到它的差异。尝试一个随机数组。 – Divakar

+0

啊!我知道了。谢谢 –

回答

0

用这样一个小代码例子不可能明确地回答“目的是什么”。这里是我的猜测:

将代码片段后,ab是不同的意见到相同的数据数组。由于Python通过引用传递对象,因此如果将值分配给b,那么相同的值将出现在a中,但最后一个索引会颠倒过来。如果您有一个数据集和一个函数,但您想要像处理最后一个数据索引时那样处理数据,则将b而不是a转换为该函数可有效地在a上运行,但最终索引会颠倒过来。

要点是:您可以通过对b的内容进行操作来操作a的内容,但操作顺序在最后一个轴上是相反的。

例如,按最后一个索引的升序对b进行排序实际上按最后一个索引的降序排列a。下面是一个简化的例子:

a = np.rand(4, 2) 
a[:, 0] = [4, 2, 1, 3] 
b = a[::-1, :] 

a具有其第一列未排序,b具有以相反的顺序相同的数据。现在

b.sort(axis=0) 

b内容以升序排序第一列,并a内容上的第一列,但按降序排序。