Python 什么是'';在此切片操作中执行-[:,:-1]

Python 什么是'';在此切片操作中执行-[:,:-1],python,arrays,list,Python,Arrays,List,在检查过程中,我偶然发现了这段代码 order_centroids = original_space_centroids.argsort()[:, ::-1] 我不明白:,做什么 按质心顺序存储的数据如下: array([[28060, 36086, 36087, ..., 29380, 28915, 28914], [28060, 33378, 33379, ..., 9698, 26784, 15313], [28060, 36209, 36211, ...,

在检查过程中,我偶然发现了这段代码

order_centroids = original_space_centroids.argsort()[:, ::-1]
我不明白:,做什么

按质心顺序存储的数据如下:

array([[28060, 36086, 36087, ..., 29380, 28915, 28914],
       [28060, 33378, 33379, ...,  9698, 26784, 15313],
       [28060, 36209, 36211, ..., 15303, 22350, 48197],
       ...,
       [28060, 36664, 36665, ..., 47821, 32892, 37525],
       [56120, 31887, 31888, ...,  9603, 51250, 30224],
       [56120, 33902, 33903, ..., 20843, 14948, 30316]])

它只是定义元组的普通逗号运算符。你的代码

order_centroids = original_space_centroids.argsort()[:, ::-1]
相当于

order_centroids = original_space_centroids.argsort().__getitem__(
    (slice(None, None, None), slice(None, None, -1)
)

逗号分隔数组中每个维度的切片。所以[:,:::-1]从第一维度获取所有项目,从第二维度获取所有项目,但在第二维度上颠倒顺序,将“步骤”设置为-1

例如,你读过吗?比较
数组([[1,2],[3,4]])
数组([[1,2],[3,4]])[:-1]
数组([[1,2],[3,4]])[:,:-1]