matplotlib에서 y 축 값에 해당하는 x 축 값을 읽는 것과 같은 간단한 작업을 시도하고 있는데 무엇이 잘못되었는지 알 수 없습니다.
이 경우 예를 들어 x = 2.0을 선택하면 y 축의 값을 찾는 데 관심이 있지만 배열에 idx
2가 있어도 튜플이 비어 xvalues
있습니다.
다음은 코드입니다.
pyplot.plot(x,y,linestyle='--',linewidth=3)
ax = pyplot.gca()
line = ax.lines[0]
xvalues = line.get_xdata()
yvalues = line.get_ydata()
idx = where(xvalues == 2.0)
y = yvalues[idx[0][0]]
이것은 xvalues
배열입니다.
[1.40000000e+00 1.45000000e+00 1.50000000e+00 1.55000000e+00
1.60000000e+00 1.65000000e+00 1.70000000e+00 1.75000000e+00
1.80000000e+00 1.85000000e+00 1.90000000e+00 1.95000000e+00
2.00000000e+00 2.05000000e+00 2.10000000e+00 2.15000000e+00
2.20000000e+00 2.25000000e+00 2.30000000e+00 2.35000000e+00]
빈 배열을 얻는 이유는 엄격한 값 2.0
이 실제로 배열에 존재하지 않기 때문입니다.
예를 들면 :
In [2]: x = np.arange(1.4, 2.4, 0.05)
In [3]: x
Out[3]:
array([ 1.4 , 1.45, 1.5 , 1.55, 1.6 , 1.65, 1.7 , 1.75, 1.8 ,
1.85, 1.9 , 1.95, 2. , 2.05, 2.1 , 2.15, 2.2 , 2.25,
2.3 , 2.35])
In [4]: x == 2.0
Out[4]:
array([False, False, False, False, False, False, False, False, False,
False, False, False, False, False, False, False, False, False,
False, False], dtype=bool)
In [5]: np.where(x == 2.0)
Out[5]: (array([], dtype=int64),)
이것은 부동 소수점 수학 제한에 대한 고전적인 문제입니다. 원하는 경우 다음을 수행 할 수 있습니다.
y[np.isclose(x, 2)]
그러나 일반적으로 주어진 x에서 y- 값을 보간하려고합니다.
예를 들어에서 값을 원한다고 가정 해 보겠습니다 2.01
. 그 값은 당신의 x-array에 존재하지 않습니다.
대신 np.interp
선형 보간을 수행 하는 데 사용하십시오 .
In [6]: y = np.cos(x)
In [7]: np.interp(2.01, x, y)
Out[7]: -0.4251320075130563
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다