나는 정수로리스트를 채우기 위해 사용하는 작은 코드 블록을 가지고있다. 그 성능을 향상시킬 필요가 있습니다. 아마도 모든 것을 numpy
배열로 변환 할 것입니다. 그러나 어떻게해야할지 모르겠습니다. 여기 리스트를 빨리 채우는 것
MWE
:
import numpy as np
# List filled with integers.
a = np.random.randint(0,100,1000)
N = 10
b = [[] for _ in range(N-1)]
for indx,integ in enumerate(a):
if 0<elem<N:
b[integ-1].append(indx)
이 그것이 무엇이다 :
a
- 의 모든 정수 (
integ
)에 대한 참조가 주어진 범위 사이에있는 경우(0,N)
- 인 경우 해당 색인을
b
의 하위 목록에 저장합니다. 여기서 색인 (integ-1
)
이 코드는 매우 빠르게 실행되지만 실제 코드는 훨씬 더 큰 목록을 사용하므로 성능을 향상시킬 필요가 있습니다.
무엇을하고 싶은지 설명하십시오. 코드는 당신이 달성하고자하는 것을보다 직설적으로 수행 할 수있는 것처럼 보입니다. – Carsten
아마도 발전기 또는 itertools가 필요합니다. 그러나 나는 @ 카 스텐에 동의한다. 당신의 목표가 무엇인지 설명하십시오. Btw b는 defaultdict가 될 수 있습니다. –
재미를 위해서, 정렬 로직을위한 한 줄 짜기는'b = [np.where (a == i) for i (1, N)]''입니다. – Carsten