Python - 优化数组例程

时间:2016-03-04 16:06:29

标签: python arrays nested

我有两个大约80 000行(和几列)的2D数组。我有两个嵌套的for循环需要很长时间才能处理(因为80000 * 80000很大)。

第一个块从一些外部数据创建一个数组。

arrayIn = [[]]
del arrayIn[0]
# use arrayIn.append() to add mixed lists to each row
# example arrayIn.append(['dogs2443', 'cats12332', 3])

然后我将此数组中的ID复制到一个新数组中,但检查以确保只添加一次ID。我尝试使用in命令,但它没有用,因为我正在将String与数组元素进行比较。

allNodes = [[]]
del allNodes[0]
for row in arrayIn
    add = True
    for node in allNodes:
        if row[0] == node[0]:
            add = False
    if add:
        allNodes.append(row[0])

然后它将索引从新数组复制回原始数组,以便更容易地访问新数组中的元素:

for row in arrayIn:
    for index, node in enumerate(allNodes, start=0)
        if row[0] == node[0]
            row[0] = index

所以有很多事情:

  1. 我的数组创建方法意味着我必须笨拙地del第一个元素。
  2. 我使用的ID是字符串数据类型。它会使它成为整数/长速吗?
  3. 使用完全不同的结构会加快速度吗? Numpy或其他什么?
  4. 随着它的进展似乎逐渐变慢。我能用记忆做些什么吗?它在强大的计算机上运行。
  5. 或许有一种巧妙的方法可以将我无法想到的这两个步骤结合起来。

1 个答案:

答案 0 :(得分:0)

你有没有想过使用发电机?然后你可以管道不同的步骤/阶段,这将导致显着的加速。