1
Numpy 최적화 버전 인 역함수 numpy.bincounts
을 만들려고합니다. bincounts
은 일대일 버전이 아니므로 가장 간단한 버전에 대해 이야기 해 보겠습니다.numpy.bincounts의 반대?
import numpy as np
def bincounts_inverse(counts):
list = []
dtype = np.min_scalar_type(counts.shape[0] - 1)
for bin, count in enumerate(counts):
ar = np.empty(count, dtype=dtype)
ar[:] = bin
list.append(ar)
return np.concatenate(list)
이것은 아마도 Numpy와 Python에 대한 현재 지식을 얻을 수있는 최상의 방법입니다. 카운트가 높고 빈도가 낮지 만 속도가 느릴 때 속도가 매우 빨라집니다. 반대의 경우에는 속도가 느려집니다. 그것은 점근 적으로 최적이지만 아마 당신이 할 수있는 최선은 아닙니다.
더 빠른 방법이 있나요?
다음은 샘플 입출력입니다.
counts = np.array([3, 1, 0, 2, 5], np.uint8)
bincounts_inverse(counts) = np.array([0, 0, 0, 1, 3, 3, 4, 4, 4, 4, 4],
dtype=np.uint8)
샘플 입력과 예상 출력을 제공 할 수 있습니까? 도움이 될 것입니다. –
@ cᴏʟᴅs my 나는 그것을 내 대답에 추가 할 것이다, 고마워. –