Python numpy数组索引可以是-1?

时间:2015-12-06 22:23:42

标签: python opencv numpy

我正在尝试https://github.com/Itseez/opencv/blob/master/samples/python2/letter_recog.py的opencv示例,我需要帮助解密此代码..

new_samples = np.zeros((sample_n * self.class_n, var_n+1), np.float32)
new_samples[:,:-1] = np.repeat(samples, self.class_n, axis=0)
new_samples[:,-1] = np.tile(np.arange(self.class_n), sample_n)

我知道np.repeatnp.tile是什么,但我不确定new_samples[:,:-1]new_samples[:,-1]应该做什么,使用-1索引。我知道numpy数组索引是如何工作的,但是没有看到这种情况。我找不到搜索的解决方案。

1 个答案:

答案 0 :(得分:3)

Python切片和numpy切片略有不同。但一般来说,数组或列表中的-1表示向后计数(从最后一项开始)。 Information Introduction中提到的字符串为:

>>> word = 'Python'
>>> word[-1]  #last character 
'n'

lists为:

>>> squares = [1, 4, 9, 16, 25]
>>> squares
[1, 4, 9, 16, 25]
>>> squares[-1]
25

这也可以扩展为numpy数组indexing,如您的示例所示。

new_samples[:,:-1]表示除最后一列之外的所有行

new_samples[:,-1]表示所有行和最后一列