簡體   English   中英

查找嵌套列表中不同子列表的相同索引中的元素之間的運行差異

[英]Finding the running difference between elements in the same index of different sublists within a nested list

我有一個嵌套列表,我必須通過它迭代和比較(並隨后操作)每個子列表的相同位置/索引中的元素。 例如,這是一個最小可重現程序:

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 的新手,所以如果這很簡單,我深表歉意 - 如果是這種情況,如果您能指導我找到解決方案,我將非常感激。

np.diff是為它設計的:

import numpy as np
b = np.r_[[a[0]], np.diff(a, axis=0)]

請注意,output 是numpy數組。 它比標准的 Python 迭代快得多。

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)])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM