2016-08-29 1 views
0

파이썬에서 Excel 일치() 함수를 할 수있는 방법이 있나요, 같은 것을 : 나는에서 오프를 잘라 특징이MATCH 함수가 파이썬에 있습니까?

K-Means Elbow Method results 같은 그래프에서

...

... y = 90, 해당 x 값이 가장 가까운 것을 인쇄하고 싶습니다.

내 조사에 따르면 값/대답은 4 여야하지만 어떻게하면이 변수를 인쇄하거나 변수에 저장할 수 있습니까?

In: print(bss/tss*100) 

Out: [ 1.21976032e-14 7.42743185e+01 8.51440985e+01 9.21584826e+01 
     9.59771981e+01 9.74117561e+01 9.82980987e+01 9.90505760e+01 
     9.92982678e+01 9.94756800e+01 9.96396123e+01 9.97126077e+01 
     9.97593424e+01 9.98030600e+01 9.98344280e+01 9.98692896e+01 
     9.98840717e+01 9.99020097e+01 9.99142963e+01] 
+0

Python proper는이 수준의 수학 조사를 지원하지 않습니다. 그러나 NumPy와 SciPy는 기본 수치 분석에 대한 다양한 지원을 제공합니다. ** SciPy.interpolate **는 당신이 필요로하는 것에 가깝습니다. – Prune

답변

0

이 단순한 기능으로 이길 수도 있습니다. 첫 번째 값을 대상 값보다 크고 이전 값을 확인한 다음 더 가까운 값의 위치 (1 기준, 0 기준 제외)를 반환합니다.

def match (table, target): 
    for over in range(len(table)): 
     if table[over] >= target: 
      break 

    # over is the index of the first vale at least as large as the target 
    # return the position (index+1) of the nearer value 
    return over+1 if 2*target > table[over-1] + table[over] \ 
      else over 


ss_table = [ 
    1.21976032e-14, 7.42743185e+01, 8.51440985e+01, 9.21584826e+01, 
    9.59771981e+01, 9.74117561e+01, 9.82980987e+01, 9.90505760e+01, 
    9.92982678e+01, 9.94756800e+01, 9.96396123e+01, 9.97126077e+01, 
    9.97593424e+01, 9.98030600e+01, 9.98344280e+01, 9.98692896e+01, 
    9.98840717e+01, 9.99020097e+01, 9.99142963e+01 
] 

print match(ss_table, 87) 
print match(ss_table, 90) 

예를 들어, 3과 4를 원하는대로 반환합니다.

+0

대단히 고마워! – Carla

0

argmin 기능을 찾고 있습니다.

from numpy import * 

print argmin(abs(data - threshold)) 

지수 임계 값에서 가장 작은 편차의을 찾을 수 있습니다. 모호한 "일치"함수에서이를 숨기는 것보다 수학 관계 (argmin(abs(...)))를 지정하는 것이 훨씬 정확합니다. 이 방법으로, 예를 들어, 두 개의 임계 값 (상한 및 하한 임계 값) 또는 비 상수 임계 함수입니다. 우리는 가장 가까운 지점이 이고 두 가지가 같은 방식으로 작동합니다.