这是什么:s [s [1:] == s [: - 1]]在numpy中做什么?

pep*_*dip 18 python numpy

我一直在寻找一种方法来有效地检查numpy数组中的重复项,并偶然发现一个包含使用此代码的答案的问题.

这条线在numpy中意味着什么?

s[s[1:] == s[:-1]]
Run Code Online (Sandbox Code Playgroud)

想要在应用之前理解代码.在Numpy doc中查看但很难找到这些信息.

jon*_*rpe 21

切片[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
Run Code Online (Sandbox Code Playgroud)

因此,比较会生成每个元素s[x]与其"邻居" 之间的布尔比较数组,该数组s[x+1]将比原始数组短一些(因为最后一个元素没有邻居):

>>> s[1:] == s[:-1]
array([False,  True, False], dtype=bool)
Run Code Online (Sandbox Code Playgroud)

并使用该数组索引原始数组,获取比较所在的元素True,即与其邻居相同的元素:

>>> s[s[1:] == s[:-1]]
array([2])
Run Code Online (Sandbox Code Playgroud)

请注意,这仅标识相邻的重复值.


Dan*_*iel 6

看一下这个:

>>> 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])
Run Code Online (Sandbox Code Playgroud)

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