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,我只是想知道我应该怎么做,这对我很有帮助。非常感谢你!!