假設我有一個 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])
但我不知道該怎么做,因為子陣列的數量可以改變
任何想法?
uj5u.com熱心網友回復:
試試這個:
diff_1 = ~(np.diff(a)==1)
ids = np.arange(len(diff_1))[diff_1] 1
result = np.split(a, ids, axis=0)
uj5u.com熱心網友回復:
如果你想要你的子陣列,你只需要使用 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])
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/416475.html
標籤:
