我有一個嵌套串列,我必須通過它迭代和比較(并隨后操作)每個子串列的相同位置/索引中的元素。例如,這是一個最小的可重現程式:
a = [[1,2,3], [1,4,7], [2,0,8], [5,1,1]] #nested list
b = [[1,2,3], [0,2,4], [1,-4,1], [3,1,-7]] #desired output
我需要創建一個新的嵌套串列,其中解決方案中的每個后續子串列都是原始嵌套串列中相同位置/索引中的子串列與原始嵌套串列中之前位置/索引中的子串列之間的差異。即b中的第一個子串列只是a中的第一個子串列,b中的第二個子串列是a中的第二個子串列減去a中的第一個子串列,b中的第三個子串列是a中的第三個子串列減去a中的第二個子串列, ...., b 中的第 n 個子串列是 a 中的第 n 個子串列減去 a 中的第 n-1 個子串列。
我需要以自動和迭代的方式執行此操作,因為我上面提供的這些串列不是真正的串列 - 真正的嵌套串列包含數千個子串列。我是 python 新手,所以如果這很簡單,我很抱歉 - 如果是這種情況,如果你能指導我找到一個解決方案,我將非常感激。
uj5u.com熱心網友回復:
import numpy as np
a = [[1,2,3], [1,4,7], [2,0,8], [5,1,1]]
b = [a[0], *[list(i) for i in np.diff(a, axis=0)]]
或者,如果你想使用純 Numpy 方法,那么
b = np.ndarray.tolist(np.r_[[a[0]], np.diff(a, axis=0)])
uj5u.com熱心網友回復:
np.diff專為它設計:
import numpy as np
b = np.r_[[a[0]], np.diff(a, axis=0)]
請注意,輸出是numpy陣列。它的作業速度比標準 Python 迭代快得多。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/424156.html
