【问题标题】:Loops & Counters (Python)循环和计数器 (Python)
【发布时间】:2014-11-11 07:14:38
【问题描述】:
    RA1_matched = []
    DEC1_matched = []

    A = -1      
    for l in np.nditer(distances1):         
        A = A + 1 #counter
        for m in np.nditer(distance1_matched):              

            if m == l:
                    RA1_matched.append(RA1_order[A])
                    DEC1_matched.append(DEC1_order[A])
                    break

second 是 113 的数组,而 two 是 60 的数组。基本上我想要做的是遍历两个并在 second 中找到与两个中的元素完全相同的任何元素(我知道它们应该是另一个在附近,听我说完)。使用计数器 A,我可以计算出数组中第二个相同元素的元素编号,即 0.1922574 是两个中的元素位置 1,但 0.1922574 是第二个中的元素位置 15(我需要找到元素位置,所以我可以将 RA1_order 中该元素位置的元素分配给 RA1_matched)。但它运行不足(它只找到 44 个匹配项而不是 60 个),因为两个小于第二个。我尝试交换它们,但是当我需要计数器上升到 113 时,计数器只上升到 59。我该怎么办?我试过用,

for X in range (0, length): #length is the size of second and goes from 0-112
    A = X,

在两个数组循环的开始,但这只会让疯狂的事情发生。不过,我可能做错了,我是编码新手,刚开始为一个物理项目学习。

--编辑

在得到一些反馈后,我将扩展和编辑一些变量名!该项目是一个天体物理学项目,但我会尝试概括我的问题.. 我使用列表和 numpy 数组的混合作为我和合作伙伴相互交换代码,但将数组转换为列表很容易.

基本上说我有两个列表,长度为 100 的 X 和长度为 60 的 Y。我想通过列表 Y 并在列表 X 中找到相同的元素。然后当我找到相同的元素时,我想知道该元素的在列表中的位置。使用该位置,我可以使用我编写的其他代码对一些数据进行排序。有人提到使用enumerate,但我不确定如何将其应用于我的问题。

【问题讨论】:

  • 欢迎来到stackoverflow。如果您更多地询问一般问题而不是特定解决方案,您可能会得到更好的答案。
  • 我不确定你到底想在这里做什么,但如果你只是想获得一个自动从 0 开始并更新以匹配当前 @987654326 的索引的计数器@值,你想要enumeratefor a, l in enumerate(np.nditer(second)):。这就是你要找的东西吗?
  • 您到底想完成什么?可能(我有一种感觉)最好不要为你正在做的事情使用循环或计数器。此外,使用比twosecond 更具描述性的变量名称对您和阅读您的代码的任何人都有帮助。
  • 他们说什么......你在做什么样的物理项目?一般问题是什么?可能有更简单的方法来做到这一点! (另外,Python 没有原生的array 结构,所以你使用的是list 还是dict?[] vs {})
  • 好的,马上更新帖子!

标签: python loops numpy


【解决方案1】:

集合和列表推导应该一起解决您的问题。

X = [2,3,4,5,6]
Y = [3,4]
Z = ['a', 'b', 'c', 'd', 'e', 'f']
print [Z[i] for i in set(X).intersection(Y)]

输出:

['d', 'e']

【讨论】:

    【解决方案2】:

    为了详细说明我的评论,这就是我的建议:

    for y in Y:
        try:
            positionInX = X.index(y)
            # use positionInX as appropriate..
        except:
            pass
    

    【讨论】:

      猜你喜欢
      • 2010-11-14
      • 1970-01-01
      • 2011-09-14
      • 1970-01-01
      • 1970-01-01
      • 2021-01-01
      • 1970-01-01
      • 2019-01-04
      • 1970-01-01
      相关资源
      最近更新 更多