用另一个整数列表离散化一个列表
Discretizing a list by another list of integers
我在 python 中离散化时遇到问题。
我有一个列表st
:
st=[(-0.8,0.8),(-0.5,0.5),(-0.104,0.104),(-0.872,0.872)]
我想将 'st' 离散化为由不同列表确定的多个部分。换句话说,我想将列表的每个元素分成 n
个部分。
例如,我想除以列表 b=(3,3,6,2)
的元素。因此(-0.8,0.8)
将被分成3部分。 (-0.5,0.5)
将分成 3 部分,依此类推。
输出应该类似于 st=[[(-0.8,-0.2),(-0.2,0.2),(0.2,0.8)),....]]
谢谢。
我觉得有两个问题可以分开处理:
如何从 Python
中获得均匀间隔
为此,让我们看一个更简单的例子:
import numpy as np
a = (-0.8,0.8)
b = 3
c = np.linspace(a[0], a[1], b + 1)
d = list(zip(c, c[1:]))
print(d)
输出:
[
(-0.80000000000000004, -0.26666666666666672),
(-0.26666666666666672, 0.26666666666666661),
(0.26666666666666661, 0.80000000000000004)
]
如何使用给定的数据结构重复上述过程
st=[(-0.8,0.8),(-0.5,0.5),(-0.104,0.104),(-0.872,0.872)]
b=(3,3,6,2)
result = []
for start_stop, parts in zip(st, b):
start, stop = start_stop
c = np.linspace(start, stop, parts + 1)
d = list(zip(c, c[1:]))
result.append(d)
print(result)
这导致:
[
[
(-0.80000000000000004, -0.26666666666666672),
(-0.26666666666666672, 0.26666666666666661),
(0.26666666666666661, 0.80000000000000004)
],
[
(-0.5, -0.16666666666666669),
(-0.16666666666666669, 0.16666666666666663),
(0.16666666666666663, 0.5)
],
等等...
Zip 将一个列表中的元素匹配到另一个列表中,并允许您将它们一起循环,这在这里非常有用。
NumPy 的线性间距函数 (np.linspace) 是您要执行的操作。查看详情 here
我在 python 中离散化时遇到问题。
我有一个列表st
:
st=[(-0.8,0.8),(-0.5,0.5),(-0.104,0.104),(-0.872,0.872)]
我想将 'st' 离散化为由不同列表确定的多个部分。换句话说,我想将列表的每个元素分成 n
个部分。
例如,我想除以列表 b=(3,3,6,2)
的元素。因此(-0.8,0.8)
将被分成3部分。 (-0.5,0.5)
将分成 3 部分,依此类推。
输出应该类似于 st=[[(-0.8,-0.2),(-0.2,0.2),(0.2,0.8)),....]] 谢谢。
我觉得有两个问题可以分开处理:
如何从 Python
中获得均匀间隔为此,让我们看一个更简单的例子:
import numpy as np
a = (-0.8,0.8)
b = 3
c = np.linspace(a[0], a[1], b + 1)
d = list(zip(c, c[1:]))
print(d)
输出:
[
(-0.80000000000000004, -0.26666666666666672),
(-0.26666666666666672, 0.26666666666666661),
(0.26666666666666661, 0.80000000000000004)
]
如何使用给定的数据结构重复上述过程
st=[(-0.8,0.8),(-0.5,0.5),(-0.104,0.104),(-0.872,0.872)]
b=(3,3,6,2)
result = []
for start_stop, parts in zip(st, b):
start, stop = start_stop
c = np.linspace(start, stop, parts + 1)
d = list(zip(c, c[1:]))
result.append(d)
print(result)
这导致:
[
[
(-0.80000000000000004, -0.26666666666666672),
(-0.26666666666666672, 0.26666666666666661),
(0.26666666666666661, 0.80000000000000004)
],
[
(-0.5, -0.16666666666666669),
(-0.16666666666666669, 0.16666666666666663),
(0.16666666666666663, 0.5)
],
等等...
Zip 将一个列表中的元素匹配到另一个列表中,并允许您将它们一起循环,这在这里非常有用。
NumPy 的线性间距函数 (np.linspace) 是您要执行的操作。查看详情 here