我一直在寻找一种方法来有效地检查numpy数组中的重复项,并偶然发现了一个问题,其中包含使用此代码的答案。
这一行在numpy中是什么意思?
s[s[1:] == s[:-1]]
在应用代码之前,我想要了解它。已在Numpy文档中查找,但无法找到此信息。
发布于 2015-06-14 23:26:09
看看这个:
>>> 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]
给出了除了最后一个数字之外的所有数字。现在比较这两个向量,例如,看看两个相邻的元素是否相同。最后,选择这些元素。
发布于 2015-06-14 23:25:38
s[1:] == s[:-1]
将不带第一个元素的s
与不带最后一个元素的s
进行比较,例如,第0个元素与第1个元素,第1个元素与第2个元素,依此类推,得到一个len(s) - 1
布尔元素数组。s[boolarray]
将只从s
中选择那些在boolarray
中相应位置具有True
的元素。因此,代码提取与下一个元素相等的所有元素。
发布于 2015-06-15 05:26:43
它将在排序数组中显示重复项。
基本上,内部表达式s[1:] == s[:-1]
将数组与其移位版本进行比较。想象一下:
1, [2, 3, ... n-1, n ]
- [1, 2, ... n-2, n-1] n
=> [F, F, ... F, F ]
在排序数组中,除非有重复操作,否则结果数组中不会有True
。然后,此表达式s[array]
过滤那些在索引array
中具有True
的表达式。
https://stackoverflow.com/questions/30831084
复制相似问题