【问题标题】:create sub-arrays of an array with numpy使用 numpy 创建数组的子数组
【发布时间】:2022-01-19 13:31:15
【问题描述】:

假设我有一个 numpy 数组:

a = np.array([10,11,12,13,22,23,24,25,30,31,32,33,34])

我想创建包含差异等于 1 的元素的子数组
我试图寻找差异大于 1 的索引

c = np.where(a[1:]-a[:-1]>1)

在这种情况下,结果将是

array1=np.array([10,11,12])
array2=np.array([22,23,24,25])
array3=np.array([30,31,32,33,34])

但我不知道该怎么做,因为子数组的数量可以改变
有什么想法吗?

【问题讨论】:

    标签: python arrays numpy


    【解决方案1】:

    试试这个:

    diff_1 = ~(np.diff(a)==1)
    ids = np.arange(len(diff_1))[diff_1]+1
    result = np.split(a, ids, axis=0)
    

    【讨论】:

      【解决方案2】:

      如果你想要你的子数组,你只需要使用 np.where 返回的索引并将子数组存储在列表中的这些索引中:

      a = np.array([4,5,10,11,12,13,22,23,24,25,30,31,32,33,34])
      c = np.where(a[1:]-a[:-1]>1)
      li=[]
      start=0
      end=len(a)
      for i in c[0]:
          li.append(a[start:i+1])
          start=i+1
      li.append(a[start:end])
      

      【讨论】:

      • 也感谢您的帮助!
      猜你喜欢
      • 2021-12-14
      • 1970-01-01
      • 2015-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-20
      • 2018-11-13
      • 1970-01-01
      相关资源
      最近更新 更多