【问题标题】:Discretizing a list by another list of integers [closed]通过另一个整数列表离散列表[关闭]
【发布时间】:2018-06-07 02:21:58
【问题描述】:

我在 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)),....]] 谢谢。

【问题讨论】:

  • 你能用预期的输出更新你的问题吗?
  • 听起来你需要np.linspace
  • 为什么是(-0.8,-0.2),(-0.2,0.2),(0.2,0.8)?不应该是(-0.8,-0.2666666666666666),(-0.2666666666666666666,0.26666666666666666),(0.2666666666666666,0.8) 所以所有分区的大小都一样吗?如果是这样,您将如何处理舍入错误?
  • 嗨,我只取了第一个十进制数字。但是,是的,您是对的,准确地说,它应该像您写的一样,大小相同,不一定。分区的数量是我想要实现的。

标签: python python-3.x discretization


【解决方案1】:

我认为有两个问题可以分开处理:

如何从 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

【讨论】:

  • 非常感谢,正是我想要的,它适用于不同的 b 值。上帝保佑你
  • 如果我有 4 个变量 x,y,v,w,知道 st=[(-0.8,0.8),(-0.5,0.5),(-0.104,0.104),(- 0.872,0.872)],x 在第一个范围内,y 在第二个范围内,依此类推,
猜你喜欢
  • 2014-09-25
  • 1970-01-01
  • 2018-08-07
  • 2021-12-18
  • 1970-01-01
  • 2022-01-23
  • 1970-01-01
  • 2022-11-19
  • 1970-01-01
相关资源
最近更新 更多