我看到了一段代码如下:
a = np.zeros((10,10,10))
b = a[:,:,::-1]
b与a相同。切片的目的是什么?
答案 0 :(得分:0)
使用如此小的代码示例无法明确回答“目的是什么”。这是我的猜测:
在代码段之后,a
和b
是不同的视图到同一个数据数组中。因为Python通过引用传递对象,所以如果将值赋给{{1 }},这些相同的值出现在b
中,但最后一个索引被反转。如果您有数据集和函数,但想要处理数据,就好像最后一个数据索引被反转一样,那么将a
而不是b
传递到该函数中会有效地运行a
,但最终指数反转。
重点是:您可以通过操作a
的内容来操纵a
的内容,但操作顺序在最后一个轴上相反。
例如,在最后一个索引上按升序排序b
实际上会在最后一个索引上按降序排序b
。这是一个简化的例子:
a
a = np.rand(4, 2)
a[:, 0] = [4, 2, 1, 3]
b = a[::-1, :]
第一列未排序,a
具有相反的相同数据。
b
现在,b.sort(axis=0)
的内容按第一列的升序排序,b
的内容按第一列排序,但按降序排列。