如何在 Python 中生成有限差的嵌套列表?
How to generate a nested list of finite differences in Python?
我正在解决一个需要计算有限差分 Δy 的问题。我们有原始的 y 值列表:[0.0000, 0.0016, 0.5875, 0.8087, 0.9509, 1.0000]
.
我们需要求出差异:
из последующего значения вычесть предыдущее (например: 0.0016-0.000; 0.5875-0.0016 и так далее) - на выходе нам нужен список, где значений на одно меньше; продолжим вычитание с рассчитанными разностями - на выходе снова список, где значений еще на одно меньше. Так идем до тех пор, пока не останется одно значение, из которого вычитать нечего.
因此,我想要一个具有有限差分的列表列表:[ [Δ1, Δ2, Δ3], [Δ4, Δ5], [Δ6] ]
。
我实现了一个代码,其中我获得了 None 个值,并且在每个嵌套列表中它们都没有减少 - 这不是我想要的输出:
[[None, None, None, None, None],
[None, None, None, None, None],
[None, None, None, None, None]]
这是我的代码:
my_list = [0.0000, 0.0016, 0.5875, 0.8087, 0.9509, 1.0000]
n=3
diff_list = []
data = [[diff_list.append(y-x) for x, y in zip(my_list[0::], my_list[1::])] for i in range(0, n)]
print(data)
拜托,post英文正文!另外,请提供您期望从该示例中获得的结果。
不过,如果我理解正确的话:
import numpy as np
my_list = [0.0000, 0.0016, 0.5875, 0.8087, 0.9509, 1.0000]
result = [np.diff(my_list, n=d) for d in range(1, len(my_list))]
在这里,result
将是:
[array([0.0016, 0.5859, 0.2212, 0.1422, 0.0491]),
array([ 0.5843, -0.3647, -0.079 , -0.0931]),
array([-0.949 , 0.2857, -0.0141]),
array([ 1.2347, -0.2998]),
array([-1.5345])]
但是,如果 my_list
非常大,您可能希望这样做以节省计算量:
result = []
for d in range(1, len(my_list)):
result.append(np.diff(my_list if d == 1 else result[-1]))
我正在解决一个需要计算有限差分 Δy 的问题。我们有原始的 y 值列表:[0.0000, 0.0016, 0.5875, 0.8087, 0.9509, 1.0000]
.
我们需要求出差异:
из последующего значения вычесть предыдущее (например: 0.0016-0.000; 0.5875-0.0016 и так далее) - на выходе нам нужен список, где значений на одно меньше; продолжим вычитание с рассчитанными разностями - на выходе снова список, где значений еще на одно меньше. Так идем до тех пор, пока не останется одно значение, из которого вычитать нечего.
因此,我想要一个具有有限差分的列表列表:[ [Δ1, Δ2, Δ3], [Δ4, Δ5], [Δ6] ]
。
我实现了一个代码,其中我获得了 None 个值,并且在每个嵌套列表中它们都没有减少 - 这不是我想要的输出:
[[None, None, None, None, None],
[None, None, None, None, None],
[None, None, None, None, None]]
这是我的代码:
my_list = [0.0000, 0.0016, 0.5875, 0.8087, 0.9509, 1.0000]
n=3
diff_list = []
data = [[diff_list.append(y-x) for x, y in zip(my_list[0::], my_list[1::])] for i in range(0, n)]
print(data)
拜托,post英文正文!另外,请提供您期望从该示例中获得的结果。
不过,如果我理解正确的话:
import numpy as np
my_list = [0.0000, 0.0016, 0.5875, 0.8087, 0.9509, 1.0000]
result = [np.diff(my_list, n=d) for d in range(1, len(my_list))]
在这里,result
将是:
[array([0.0016, 0.5859, 0.2212, 0.1422, 0.0491]),
array([ 0.5843, -0.3647, -0.079 , -0.0931]),
array([-0.949 , 0.2857, -0.0141]),
array([ 1.2347, -0.2998]),
array([-1.5345])]
但是,如果 my_list
非常大,您可能希望这样做以节省计算量:
result = []
for d in range(1, len(my_list)):
result.append(np.diff(my_list if d == 1 else result[-1]))