加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 将数组值的增量减少到1

发布时间:2020-12-20 12:41:34 所属栏目:Python 来源:网络整理
导读:我正在尝试创建一个列表(比如说B),只有当另一个列表(例如A)的值存在差异时,该列表才会递增,例如: [1,1,2,4,4]至[0,2]或 [1,1]等 以下代码执行此操作: boxes=[1,4]positions=[0]position=0for psn,box in list(enumerate(boxes))[:-1]: if boxes[psn+1]-box
我正在尝试创建一个列表(比如说B),只有当另一个列表(例如A)的值存在差异时,该列表才会递增,例如:

[1,1,2,4,4]至[0,2]或

[1,1]等

以下代码执行此操作:

boxes=[1,4]
positions=[0]
position=0
for psn,box in list(enumerate(boxes))[:-1]:
    if boxes[psn+1]-box ==0:
        increment=0
    else:
        increment=1
    position=position+increment
    positions.append(position)
print(positions)

任何人都可以使用列表推导(最好使用lambda函数)来提供建议吗?

解决方法

这是使用nummpy的方法:

a = [1,4]
[0] + np.cumsum(np.clip(np.diff(a),1)).tolist()
[0,2]

或者对于另一个例子:

a = [1,1]

?细节

a = [1,4]

np.diff得到阵列的第一个区别

np.diff(a)
array([0,0])

并使用np.clip来限制0到1之间的值:

np.clip(np.diff(a),1)
array([0,0])

最后取np.cumsum并在开头添加一个0,因为差异会给你一个长度为n-1的数组:

[0] + np.cumsum(np.clip(np.diff(a),2]

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读