小编ink*_*ink的帖子

numpy 数组上的高效循环

已经问过这个问题的版本,但我没有找到满意的答案。

问题:给定一个大的 numpy 向量,找到重复的向量元素的索引(其变体可以与容差进行比较)。

所以问题是 ~O(N^2) 和内存限制(至少从当前算法的角度来看)。我想知道为什么我尝试过的 Python 比等效的 C 代码慢 100 倍或更多。

import numpy as np
N = 10000
vect = np.arange(float(N))
vect[N/2] = 1
vect[N/4] = 1
dupl = []
print("init done")
counter = 0
for i in range(N):
    for j in range(i+1, N):
        if vect[i] == vect[j]:
            dupl.append(j)
            counter += 1

print("counter =", counter)
print(dupl)
# For simplicity, this code ignores repeated indices 
# which can be trimmed later. Ref output is
# counter = 3 …
Run Code Online (Sandbox Code Playgroud)

python arrays optimization loops numpy

6
推荐指数
2
解决办法
1万
查看次数

标签 统计

arrays ×1

loops ×1

numpy ×1

optimization ×1

python ×1