首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在==中: s[s[1:] numpy s[:-1]]做什么?

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

Stack Overflow用户
提问于 2015-06-14 23:20:14
回答 3查看 10.6K关注 0票数 19

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

这一行在numpy中是什么意思?

代码语言:javascript
复制
s[s[1:] == s[:-1]]

在应用代码之前,我想要了解它。已在Numpy文档中查找,但无法找到此信息。

EN

回答 3

Stack Overflow用户

发布于 2015-06-14 23:26:09

看看这个:

代码语言:javascript
复制
>>> 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]给出了除了最后一个数字之外的所有数字。现在比较这两个向量,例如,看看两个相邻的元素是否相同。最后,选择这些元素。

票数 8
EN

Stack Overflow用户

发布于 2015-06-14 23:25:38

s[1:] == s[:-1]将不带第一个元素的s与不带最后一个元素的s进行比较,例如,第0个元素与第1个元素,第1个元素与第2个元素,依此类推,得到一个len(s) - 1布尔元素数组。s[boolarray]将只从s中选择那些在boolarray中相应位置具有True的元素。因此,代码提取与下一个元素相等的所有元素。

票数 3
EN

Stack Overflow用户

发布于 2015-06-15 05:26:43

它将在排序数组中显示重复项。

基本上,内部表达式s[1:] == s[:-1]将数组与其移位版本进行比较。想象一下:

代码语言:javascript
复制
1, [2, 3, ... n-1, n  ]
-  [1, 2, ... n-2, n-1] n
=> [F, F, ...   F, F  ]

在排序数组中,除非有重复操作,否则结果数组中不会有True。然后,此表达式s[array]过滤那些在索引array中具有True的表达式。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30831084

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档