我正在尝试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.repeat
和np.tile
是什么,但我不确定new_samples[:,:-1]
或new_samples[:,-1]
应该做什么,使用-1索引。我知道numpy
数组索引是如何工作的,但是没有看到这种情况。我找不到搜索的解决方案。
答案 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]
表示所有行和最后一列