【问题标题】:Method for reading a string of coordinates and taking out intgers (Python)读取一串坐标并取出整数的方法(Python)
【发布时间】:2014-04-13 17:23:55
【问题描述】:

假设我有一个字符串表示x, y 轴上的点“(1,2), (10,20), (100,200)” 抽象坐标整数以进行数值分析的最佳方法是什么?

所以这是一个两部分的问题--

首先,哪种形式最适合数学/科学计算? (例如列表列表[[1,2], [10,20]...,或两个列表x = [1,10,100] y = [2,20...,或字典或其他形式?)

其次,获取该表单的最佳 Python 方法是什么?

提前致谢!

PS 如果在 numpy 或 scipy 中有一个简单的答案,我很想知道,但我也想知道如何在不使用任何一个的情况下解决它。

【问题讨论】:

  • 基本上,这取决于你在做什么。它们都是表示事物的有效方式,但有不同的取舍。简短的回答是“一开始不要担心”。但是,请考虑以下问题:坐标序列是否会增长? (如果是这样,请使用list)您是成对处理(例如x0、y0)还是顺序处理(例如所有x等)?你会做很多数学计算吗?您是否经常使用其他库(即,如果您想使用 matplotlib 绘制东西,无论如何都将转换为 numpy 数组)。
  • 在“提取坐标整数”中,您的意思是“提取”吗?

标签: python list numpy scipy scientific-computing


【解决方案1】:

大多数科学工具(和用户)期望坐标值成对(x, y)。我认为,如果您希望能够更改任何值,请使用 list 或 lists,例如:

[[x, y], [x1, y1], ...] 

您希望您的坐标值保持不变,请使用 list 或 tuples:

[(x, y), (x1, y1), ...]

【讨论】:

    【解决方案2】:

    一个可能的解决方案是:

    import re
    t = "(1,2), (10,20), (100,200)"  
    r = []
    for i in re.findall(r'\((\d+.\d+)\)', t):
        r.append(tuple((int(i) for i in i.split(','))))  
    print r
    

    【讨论】:

      【解决方案3】:

      如果您不想在初始化后更改轴,那么最好的选择是list of tuples。如果要更改值,请使用list of lists。

      list 的优势是在list 中维护订单。如果您使用dict,那么您必须将键作为某个值,并且dict 不用于订单操作。有多种方式可以订购 dict,例如 OrderDict 类等等。

      【讨论】:

      • 我同意,对我来说最好的解决方案是元组列表。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多