查找嵌套列表中不同子列表的相同索引中的元素之间的 运行 差异
Finding the running difference between elements in the same index of different sublists within a nested list
我有一个嵌套列表,我必须通过它迭代和比较(并随后操作)每个子列表的相同 position/index 中的元素。例如,这里有一个最小可重现的程序:
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
我基本上需要创建一个新的嵌套列表,其中解决方案中的每个后续子列表都是原始嵌套列表中相同 position/index 中的子列表与 [=18= 中的子列表之间的差异] 在原始嵌套列表之前。即,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)]
注意输出是 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)])
我有一个嵌套列表,我必须通过它迭代和比较(并随后操作)每个子列表的相同 position/index 中的元素。例如,这里有一个最小可重现的程序:
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
我基本上需要创建一个新的嵌套列表,其中解决方案中的每个后续子列表都是原始嵌套列表中相同 position/index 中的子列表与 [=18= 中的子列表之间的差异] 在原始嵌套列表之前。即,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)]
注意输出是 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)])