Numpy: BUG : numpy.percentile ์ถœ๋ ฅ์ด ์ •๋ ฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2019๋…„ 10์›” 12์ผ  ยท  16์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: numpy/numpy

numpy.percentile ์˜ ์ถœ๋ ฅ์ด ํ•ญ์ƒ ์ •๋ ฌ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

์žฌํ˜„ ์ฝ”๋“œ ์˜ˆ :

import numpy as np
q = np.arange(0, 1, 0.01) * 100
percentile = np.percentile(np.array([0, 1, 1, 2, 2, 3, 3 , 4, 5, 5, 1, 1, 9, 9 ,9, 8, 8, 7]) * 0.1, q)
equals_sorted = np.sort(percentile) == percentile
print(equals_sorted)
assert equals_sorted.all()

์—๋Ÿฌ ๋ฉ”์‹œ์ง€:

[์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ
์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ
์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ
์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ
์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ
์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ
์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ
์ฐธ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ๊ฑฐ์ง“ ๊ฑฐ์ง“ ์ฐธ ์ฐธ ์ฐธ ์ฐธ ๊ฑฐ์ง“ ๊ฑฐ์ง“
์ฐธ ์ฐธ ์ฐธ ๊ฑฐ์ง“]
AssertionError Traceback (๊ฐ€์žฅ ์ตœ๊ทผ ํ˜ธ์ถœ ๋งˆ์ง€๋ง‰)
์—
1 q = np.percentile (np.array ([0, 1, 1, 2, 2, 3, 3, 4, 5, 5, 1, 1, 9, 9, 9, 8, 8, 7]) * 0.1, np.arange (0, 1, 0.01) * 100)
2 equals_sorted = np.sort (q) == q
----> 3 assert equals_sorted.all ()

AssertionError :

Numpy / Python ๋ฒ„์ „ ์ •๋ณด :

1.17.2 3.6.8 (v3.6.8 : 3c6b436a57, 2018 ๋…„ 12 ์›” 24 ์ผ, 02:04:31)
[GCC 4.2.1 ํ˜ธํ™˜ Apple LLVM 6.0 (clang-600.0.57)]

00 - Bug numpy.lib good first issue

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š”, @ eric-wieser๊ฐ€ ์ œ๊ณต ํ•œ stackexchange ๋‹ต๋ณ€ ์ค‘ ํ•˜๋‚˜์— ์ข‹์€ ๋Œ€์ฒด ๋ณด๊ฐ„๋ฒ•์ด์žˆ๋Š” ์—…๋ฐ์ดํŠธ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์Šค๋ ˆ๋“œ์—๋Š” ๋‹จ์กฐ๋กœ์šด ์ฆ๊ฑฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ œ์•ˆ ๋œ ์ˆ˜์ •์€ ์–ธ๊ธ‰ ๋œ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ด๊ฒƒ์„ ์ฒซ ๋ฒˆ์งธ ์ปค๋ฐ‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
20191209_020250

๋ชจ๋“  16 ๋Œ“๊ธ€

์™œ ์ •๋ ฌ ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๊นŒ? ๋ฐฑ๋ถ„์œ„ ์ˆ˜๋Š” ์š”์†Œ ๋ณ„์ด๋ฉฐ ์ถœ๋ ฅ์€ ์ž…๋ ฅ ์ˆœ์„œ์ž…๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š” !
์‚ฌ์‹ค, ๋ฐฑ๋ถ„์œ„ ์ˆ˜๋Š” elmenet-wise์ž…๋‹ˆ๋‹ค. q ๊ณ ๋ คํ•  ๋•Œ ์šฐ๋ฆฌ์˜ ๊ฒฝ์šฐ๋Š”
np.arange(0, 1, 0.01) * 100
q ๊ฐ€ ์ •๋ ฌ ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ถœ๋ ฅ์ด ์ •๋ ฌ ๋  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•ฉ๋‹ˆ๋‹ค.

๋‹จ์ผ ULP ๋‚ด์—๋Š” ๋™์ผํ•œ ์ถœ๋ ฅ ๊ฐ’์„ ๊ฐ€์ง„ ๋‹ค๋ฅธ ์ž…๋ ฅ์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ๋ช‡ ๊ฐ€์ง€ ์ˆซ์ž ์˜ค๋ฅ˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๊ฒƒ์— ๋Œ€ํ•ด ํ•  ์ผ์ด ์—†์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์‹คํŒจ ์‚ฌ๋ก€๊ฐ€ ์•ฝ๊ฐ„ ๊ฐ์†Œํ–ˆ์Šต๋‹ˆ๋‹ค.

In [40]: np.percentile(np.array([0, 1, 1, 2, 2, 3, 3 , 4, 5, 5, 1, 1, 9, 9 ,9, 8, 8, 7]) * 0.1, [89, 90, 95, 96, 98, 99])
Out[40]: array([0.9, 0.9, 0.9, 0.9, 0.9, 0.9])

In [41]: np.diff(_)
Out[41]:
array([-1.11022302e-16,  2.22044605e-16, -1.11022302e-16,  1.11022302e-16,
       -1.11022302e-16])

์—ฌ๊ธฐ diff๋ฅผ ํ†ตํ•ด ์ •๋ ฌ๋˜์ง€ ์•Š์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๊ฐ€ ํ•  ์ˆ˜์žˆ๋Š” ์ผ์ด์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด lerp ์—ฐ์‚ฐ (๋ณธ์งˆ์ ์œผ๋กœ add(v_below*weights_below, v_above*weights_above) )์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋‹ค์Œ ๋ผ์ธ์˜ ์•ˆ์ •์„ฑ ๋•Œ๋ฌธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

https://github.com/numpy/numpy/blob/b9fa88eec62e34e906689408096beb2450830d9a/numpy/lib/function_base.py#L3907 -L3908

https://github.com/numpy/numpy/blob/b9fa88eec62e34e906689408096beb2450830d9a/numpy/lib/function_base.py#L3928 -L3929

https://github.com/numpy/numpy/blob/b9fa88eec62e34e906689408096beb2450830d9a/numpy/lib/function_base.py#L3939 -L3942

๋ถ€๋™ ์†Œ์ˆ˜์  ๊ฐ’์„ ์„ ํ˜•์œผ๋กœ ๋ณด๊ฐ„ ํ•  ๋•Œ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์ ˆ์ถฉ์•ˆ์ด ์žˆ์ง€๋งŒ ์—ฌ๊ธฐ์— "์˜ฌ๋ฐ”๋ฅธ"์„ ํƒ์ด ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๊ณ  ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์„ ๋งŒ๋“ค์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

๋” ๋งŽ์€ ๋ฐฐ๊ฒฝ ์ •๋ณด : https://math.stackexchange.com/questions/907327/accurate-floating-point-linear-interpolation

๋„ค, ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ์ž‘์—…์„ ์žฌ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์— +1ํ•˜์—ฌ ์—„๊ฒฉํ•˜๊ฒŒ ๋‹จ์กฐ๋กญ์Šต๋‹ˆ๋‹ค (์ˆซ์ž). ๋” ๋‚˜์˜์ง€ ์•Š๊ฑฐ๋‚˜ ์ ์–ด๋„ ๊ฑฐ์˜ ๋™์ผํ•œ ์ •๋ฐ€๋„๊ฐ€ ํ˜„๋ช…ํ•˜๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋ช‡ ๊ฐ€์ง€ ์ถ”๊ฐ€ ์ž‘์—… / ์†๋„์— ๋Œ€ํ•ด ๊ฑฑ์ •ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค๊ณ  ํ™•์‹ ํ•ฉ๋‹ˆ๋‹ค.

ํŽธ์ง‘ : ์ข‹์€ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๋กœ ํ‘œ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ ํ›„์—๋Š” ์•„๋งˆ๋„ ํŒŒ์ด์ฌ ์ฝ”๋“œ ๋‚ด์—์„œ ์ƒ๋‹นํžˆ ๊ฐ„๋‹จํ•œ ์žฌ๊ตฌ์„ฑ ์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ์— ๊ด€์‹ฌ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‹คํŒจํ•œ ์‚ฌ๋ก€ ์ค‘ ์ผ๋ถ€๋ฅผ ์‚ดํŽด๋ณด๊ณ  ๋ชจ๋‘ ๋™์ผํ•œ ์ˆซ์ž ์‚ฌ์ด์— ์„ ํ˜• ๋ณด๊ฐ„์ด ํฌํ•จ๋˜์–ด ์žˆ์Œ์„ ์•Œ์•˜์Šต๋‹ˆ๋‹ค. ์ฆ‰, Eric์˜ ์˜ˆ์—์„œ ๊ทธ๊ฐ€ ๋‚˜์—ดํ•œ ๋ชจ๋“  ๋ฐฑ๋ถ„์œ„ ์ˆ˜๋Š” 2 ๊ฐœ์˜ 9 ์‚ฌ์ด์— ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋‚˜๋Š” ๊ทธ๋“ค ์‚ฌ์ด์˜ ์„ ํ˜• ๋ณด๊ฐ„์ด ์ •ํ™•ํžˆ 9๊ฐ€๋˜์–ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ๋‘ ์ˆซ์ž ์‚ฌ์ด์˜ ์„ ํ˜• ๋ณด๊ฐ„ ๋ฌธ์ œ๋ฅผ ์ˆ˜์ •ํ•˜๋ฉด์ด ๋ฒ„๊ทธ์— ์ œ์‹œ๋œ ๋ฌธ์ œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ณ  ์„ฑ๋Šฅ์— ๋ˆˆ์— ๋„๋Š” ํƒ€๊ฒฉ์„์ฃผ์ง€ ์•Š๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์„ ํ˜• ๋ณด๊ฐ„์ด ํ•ญ์ƒ ๋‹จ์กฐ๋กญ๋„๋ก ๋ณด์žฅํ•˜๋ ค๋ฉด ๊ทธ๋ ‡๊ฒŒ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„ฑ๋Šฅ์„ ์ €ํ•˜์‹œํ‚ฌ ๋ถ€๋ถ„ ํ•จ์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

@ ngonzo95 ์ด๋ฅผ ๋‹ฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๋ณด๊ฐ„ ์‚ฐ์ˆ ์„ ๋‹ค๋ฅด๊ฒŒ ์ฒ ์žํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ๋ถ€๋ถ„์ ์œผ๋กœ ๊ณ„์‚ฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋ถ€๋ถ„์ ์œผ๋กœ ๊ณ„์‚ฐํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

lerp ์— ๋Œ€ํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ๊ด€์‹ฌ์„ ๊ฐ€์งˆ ์ˆ˜๋„ ์žˆ๊ณ  ๊ทธ๋ ‡์ง€ ์•Š์„ ์ˆ˜๋„์žˆ๋Š” ์ผ๋ถ€ :

  • ๋‹จ์กฐ๋กœ์šด ( (lerp(a, b, t1) - lerp(a, b, t0)) * (b - a) * (t1 - t0) >= 0 )
  • ์ œํ•œ๋จ ( a <= lerp(a, b, t) <= b )
  • ๋Œ€์นญ ( lerp(a, b, t) == lerp(b, a, 1-t) )

( 0 <= t <= 1 )

์˜ค ๊ทธ๋ž˜, ๋‚˜๋Š” ์กฐ๊ฐ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ง€ ์•Š์•˜์ง€๋งŒ ์ด๊ฒƒ์˜ ๋‚ด ์žฌ์„ฑ์„ ์ถฉ๋ถ„ํžˆ ์•Œ์ง€ ๋ชปํ•œ๋‹ค.

๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ฉด ํ•จ์ˆ˜ a + (ba) * t๊ฐ€ ๋‹จ์กฐ (์œ„์— ์–ธ๊ธ‰ ๋œ ์ •์˜)์™€ ์ผ๊ด€์„ฑ (lerp (a, a, t) = a)์ด๋ผ๋Š” ์†์„ฑ์„ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ์ด๊ฒƒ์ด ๊ธฐ๋Šฅ ์š”๊ตฌ ์‚ฌํ•ญ์— ์ถฉ๋ถ„ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค. ์ด ํ•จ์ˆ˜์˜ ์ฃผ์š” ๋‹จ์  ์ค‘ ํ•˜๋‚˜๋Š” lerp (a, b, 1)! = b์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ค‘์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹์ด 0 <= t <1์„ ๋ณด์žฅํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์ด ํ•จ์ˆ˜์˜ ์ฃผ์š” ๋‹จ์  ์ค‘ ํ•˜๋‚˜๋Š” lerp (a, b, 1)! = b์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚˜๋Š” ์šฐ๋ฆฌ๊ฐ€ ๊ฐ€์ค‘์น˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ์‹์ด 0 <= t <1์„ ๋ณด์žฅํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋ถˆํ–‰ํžˆ๋„ lerp(a, b. 1-eps) > b) ๋Š” ํ•ด๋‹น ๊ณต์‹์œผ๋กœ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์˜คํ”ˆ ์†Œ์Šค๊ฐ€ ์ฒ˜์Œ์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์„ ๋‚˜์˜ ์ข‹์€ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ œ๋กœ ํ•ด๊ฒฐํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ์–ด๋–ป๊ฒŒ ๊ธฐ์—ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? ์ „์ œ ์กฐ๊ฑด์ด ์žˆ์Šต๋‹ˆ๊นŒ?

๋ช‡ ๊ฐ€์ง€ ์‹คํŒจํ•œ ๊ฒฝ์šฐ๋ฅผ ์‚ดํŽด ๋ณด์•˜๋Š”๋ฐ ๋ชจ๋‘ ๋™์ผํ•œ ์ˆซ์ž ์‚ฌ์ด์— ์„ ํ˜• ๋ณด๊ฐ„์ด ํฌํ•จ๋˜์–ด ์žˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

scikit-learn์—์„œ ์šฐ๋ฆฌ๋Š” ์ตœ๊ทผ์ด ๋ฌธ์ œ๋ฅผ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค : https://github.com/scikit-learn/scikit-learn/issues/15733

q ๊ฐ€ ์—„๊ฒฉํ•˜๊ฒŒ ์ฆ๊ฐ€ ํ•  ๊ฒƒ์œผ๋กœ ์˜ˆ์ƒํ•˜๋ฏ€๋กœ np.maximum.accumulate ๋ฐฐ์—ด์„ ์žฌ์ •๋ ฌ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ NumPy์—์„œ ์ง์ ‘ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ข‹์€ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๊ธฐ ์œ„ํ•ด ํŒŒํ—ค์น  ์ˆ˜์žˆ๋Š” ๊ณณ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@glemaitre : numpy์˜ ๋ชจ๋“  ๊ด€๋ จ ์ค„์€ ์œ„์˜ ๋‚ด ์˜๊ฒฌ ( https://github.com/numpy/numpy/issues/14685#issuecomment -541467915)์— ๋งํฌ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, @ eric-wieser๊ฐ€ ์ œ๊ณต ํ•œ stackexchange ๋‹ต๋ณ€ ์ค‘ ํ•˜๋‚˜์— ์ข‹์€ ๋Œ€์ฒด ๋ณด๊ฐ„๋ฒ•์ด์žˆ๋Š” ์—…๋ฐ์ดํŠธ๊ฐ€์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์Šค๋ ˆ๋“œ์—๋Š” ๋‹จ์กฐ๋กœ์šด ์ฆ๊ฑฐ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์œผ๋ฉฐ ์ œ์•ˆ ๋œ ์ˆ˜์ •์€ ์–ธ๊ธ‰ ๋œ ๋ชจ๋“  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์ž…๋‹ˆ๋‹ค.
์ด๊ฒƒ์ด ๋ฌธ์ œ์— ๋Œ€ํ•ด ์˜๋ฏธ๊ฐ€ ์žˆ๋‹ค๋ฉด, ์ด๊ฒƒ์„ ์ฒซ ๋ฒˆ์งธ ์ปค๋ฐ‹์œผ๋กœ ๊ตฌํ˜„ํ•˜๊ฑฐ๋‚˜ ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์‹œ๋„ํ•ด ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
20191209_020250

quantile() lerp์— ๋˜ ๋‹ค๋ฅธ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. inf ๊ฐ’์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ฒ˜๋ฆฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. # 12282๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰