"평활화"잘 정의 된 동작 아니다; 그것이 의미하는 바는 해석에 열려 있습니다. "더 매끄러운"데이터를 생성하는 많은 연산이 있으며 대부분은 평활화의 양을 제어하는 하나 이상의 매개 변수를 가지고 있습니다. 평활화 된 데이터로 무엇을 할 것인지에 대해 더 많이 알지 못하면이 질문에 대한 명확한 대답을 내리기가 어렵습니다.
여기에 답변이 있습니다. :)
scipy.interpolate.Rbf
은 스무딩 매개 변수를 포함하는 n 차원 데이터의 보간 자입니다. 이 매개 변수가 0 (기본값)이면 true 보간이 생성됩니다. 즉, 주어진 z 값을 지정된 (x, y) 값으로 반환하고 다른 점에서는 보간 된 z 값을 반환합니다. Rbf
에는 smooth
매개 변수가 포함되어 있으며 문서 문자열에 "0보다 큰 값은 근사값의 매끄러움을 증가시킵니다."
그래서, Rbf
을 사용하여 질문에 대한 답변은 다음과 같습니다.
이
f = Rbf(x, y, z, smooth=<a positive number>)
z_smoothed = f(x, y)
(불행하게도, Rbf
문서화 문자열을 사용하는 방법 smooth
설명하지 않습니다 당신은 알아 코드에 발굴해야 할 것이다 그 동안 어떤 값을 시도해보고 결과가 사용자의 요구를 충족시키는 지 확인할 수 있습니다.)
다음 스크립트는 Rbf
을 0이 아닌 smooth
인수와 함께 사용하는 예입니다. 입력 점과 매끄럽게 한 표면은 matplotlib를 사용하여 플롯됩니다.
import numpy as np
from scipy.interpolate import Rbf
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
# Generate some random (x, y, z) values.
npoints = 36
np.random.seed(12345)
x, y = np.random.rand(2, npoints)
z = np.cos(3*x)*np.sin(2*y) + 0.4*np.random.randn(npoints)
# "Interpolator" with smoothing
f = Rbf(x, y, z, smooth=0.05)
print("Original z values:")
print(z)
print("Smoothed z values:")
print(f(x, y))
u = np.linspace(0, 1, 25)
xx, yy = np.meshgrid(u, u)
zz = f(xx, yy)
fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')
ax.scatter(x, y, z)
surf1 = ax.plot_surface(xx, yy, zz, rstride=1, cstride=1, color='g',
linewidth=0, antialiased=False, alpha=0.5)
plt.show()
스크립트는 다음 플롯을 생성합니다. 파란색 점은 원래 데이터이고 녹색면은 Rbf
에 의해 생성 된 함수의 그래프입니다.
![plot](https://i.stack.imgur.com/mDMMY.png)
스크립트 인쇄 :
Original z values:
[-0.34127933 -0.30729404 0.21155127 0.82107652 0.17163933 -0.44447561
-0.62316986 -0.07631452 -0.2452825 0.08006371 -0.16038592 -1.15094797
0.97879369 -0.59069121 0.28481385 -0.61505364 -1.28958296 -0.40040525
-0.62065409 0.10887611 0.11082111 -0.57756184 -0.08303365 0.1736536
-0.11741524 -0.25279036 -0.87523777 -0.62589892 0.14774674 1.02822874
1.40065013 0.0570847 -1.24442082 1.29216089 0.04075983 0.35829967]
Smoothed z values:
[-0.4760952 -0.32638375 0.33082556 0.81805681 0.04136433 -0.04617472
-0.6941891 -0.17280308 -0.21626414 -0.25286811 -0.19661876 -1.04547018
1.19599927 -0.55479106 0.3257578 -0.35879233 -0.9914419 -0.74646378
-0.60559207 -0.11546096 -0.10684431 -0.35038102 0.05290993 0.10818459
-0.07302746 -0.33240211 -0.82955756 -0.32360917 0.11565045 0.98144511
1.22421926 -0.08092414 -0.97381114 1.16754806 0.01186976 0.11594726]
도움이 시간을내어 주셔서 감사합니다, 정말 감사! – Mark