我一直在寻找一种方法来有效地检查numpy数组中的重复项,并偶然发现一个包含使用此代码的答案的问题.
这条线在numpy中意味着什么?
s[s[1:] == s[:-1]]
想要在应用之前理解代码.在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
因此,比较会生成每个元素s[x]与其"邻居" 之间的布尔比较数组,该数组s[x+1]将比原始数组短一些(因为最后一个元素没有邻居):
>>> s[1:] == s[:-1]
array([False,  True, False], dtype=bool)
并使用该数组索引原始数组,获取比较所在的元素True,即与其邻居相同的元素:
>>> s[s[1:] == s[:-1]]
array([2])
请注意,这仅标识相邻的重复值.
看一下这个:
>>> 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]除了最后一个.现在比较这两个向量,例如查看两个相邻元素是否相同.最后,选择这些元素.
| 归档时间: | 
 | 
| 查看次数: | 6178 次 | 
| 最近记录: |