Python 检查数组中的所有正值是否连续
Python 检查数组中的所有正值是否连续,python,Python,是否有人知道如何修改此代码,使其在所有正值(1)连续时返回 基本上,我不希望计数器告诉我1个连续的最大数量,如果绝对所有的都是连续的,我想返回,所以如果所有的都是连续的,答案将是真的,否则将是假的 在示例中:arr=[1,1,0,0,1,0,1,1,1,1,1]它将返回false因为1之间有0,不是所有的都是连续的,但是在这个=arr=[0,0,0,1,1,1,1,1,1]中,它将返回true因为所有的1都是连续的 我什么都没试过,因为我不知道该怎么开始,也许是用一组布尔人?。我正在使用pyth
是否有人知道如何修改此代码,使其在所有正值(1)连续时返回 基本上,我不希望计数器告诉我1个连续的最大数量,如果绝对所有的都是连续的,我想返回,所以如果所有的都是连续的,答案将是真的,否则将是假的 在示例中:arr=[1,1,0,0,1,0,1,1,1,1,1]它将返回false因为1之间有0,不是所有的都是连续的,但是在这个=arr=[0,0,0,1,1,1,1,1,1]中,它将返回true因为所有的1都是连续的 我什么都没试过,因为我不知道该怎么开始,也许是用一组布尔人?。我正在使用python以防万一
谢谢大家! 使用numpy可以很容易地做到这一点。取连续元素之间的差值将使相邻元素相等时为零,相邻元素增加时为+1(如0右边的1),相邻元素减少时为负。因此,以下工作也适用于0,1以外的数字:
import numpy as np
z=np.array([0,0,0,0,1,1,1,1,1,2,3])
all(np.diff(z)>=0)
Out[9]: True
z=np.array([0,0,0,0,1,1,1,1,1,2,1])
all(np.diff(z)>=0)
Out[11]: False
这感觉像是一个家庭作业问题,所以我不会给你代码,但这里有一些伪代码 这绝对不是有效的,而是非常直观的 跟踪器=[] arr=[0,0,0,12,12,11,10] 遍历每个索引,跟踪该数字出现的次数
- 将该索引设置为1,即tracker[index]=1
- 将跟踪器[索引]增加1
- 检查是否
arr[index-1]等于arr[index]
- 如果没有,那就不是了 连续的
为
z=np.array([0,0,0,0,2,1,1,1,1,1,1,1])
只对二进制数据有效这一个也会为您提供false-->np.array([0,0,0,0,1,1,1,1,0,0,0,0])
我不知道numpy能做到这一点,太好了!在这种情况下,我不能使用numpy,但非常感谢!:)@Pygirl这两个例子都是假的,应该是假的,但应该是真的。这里->非常感谢你的帮助!!这基本上就像家庭作业一样,但别担心,我有字符串值,不是1和0,我只是想知道我应该怎么做,这对我很有帮助。非常感谢你!!