numpy:如何理解s[1:]=s[:-1]?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (17)

我一直在寻找一种方法来有效地检查numpy数组中的重复项,

s[s[1:] == s[:-1]]

怎么理解?

提问于
用户回答回答于

看看这个:

>>> s=numpy.array([1,3,5,6,7,7,8,9])
>>> s[1:] == s[:-1]
array([False, False, False, False,  True, False, False], dtype=bool)
>>> s[s[1:] == s[:-1]]
array([7])

所以s[1:]给出所有的数字,除了第一个,和s[:-1]最后一个。现在比较这两个向量,例如,看看两个相邻的元素是否相同。最后,选择这些元素。

用户回答回答于

切片[1:][:-1]

>>> import numpy as np
>>> s = np.array((1, 2, 2, 3))  # four element array
>>> s[1:]
array([2, 2, 3])  # last three elements
>>> s[:-1]
array([1, 2, 2])  # first three elements

因此,比较在每个元素之间生成一个布尔比较数组。s[x]s[x+1],它将比原始数组短一个(因为最后一个元素没有下一个元素:

>>> s[1:] == s[:-1]
array([False,  True, False], dtype=bool)

使用该数组对原始数组进行索引,可以获得比较所在的元素。True即与其邻国相同的要素:

>>> s[s[1:] == s[:-1]]
array([2])

扫码关注云+社区