【发布时间】: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 的索引的计数器@值,你想要enumerate:for a, l in enumerate(np.nditer(second)):。这就是你要找的东西吗? -
您到底想完成什么?可能(我有一种感觉)最好不要为你正在做的事情使用循环或计数器。此外,使用比
two或second更具描述性的变量名称对您和阅读您的代码的任何人都有帮助。 -
他们说什么......你在做什么样的物理项目?一般问题是什么?可能有更简单的方法来做到这一点! (另外,Python 没有原生的
array结构,所以你使用的是list还是dict?[] vs {}) -
好的,马上更新帖子!