Python nội suy 3D nhanh

Nội suy láng giềng tự nhiên là một phương pháp nội suy dữ liệu phân tán [i. e. bạn biết các giá trị của hàm tại các vị trí rải rác]. Nó thường vượt trội so với phép nội suy barycentric tuyến tính, đây là phương pháp nội suy thường được sử dụng do hàm griddata của Scipy cung cấp

Có một số cách triển khai phép nội suy hàng xóm tự nhiên 2D trong Python. Chúng tôi cần triển khai 3D nhanh có thể chạy mà không cần GPU, vì vậy chúng tôi đã viết triển khai Nội suy Sibson rời rạc [một phiên bản nội suy lân cận tự nhiên nhanh nhưng gây ra các lỗi nhỏ so với phép nội suy lân cận tự nhiên “hình học”]

Cách sử dụng

Mô-đun này hiển thị một chức năng duy nhất, griddata

API cho naturalneighbor.griddata tương tự như scipy.interpolate.griddata. Không giống như scipy, đối số thứ ba không phải là một mgrid dày đặc mà thay vào đó chỉ là các phạm vi lẽ ra đã được chuyển đến mgrid. Điều này là do cách tiếp cận Sibson rời rạc yêu cầu các điểm được nội suy nằm trên một lưới cách đều nhau

Có một số phương tiện chung có sẵn trong SciPy để nội suy và làm mịn dữ liệu ở các chiều 1, 2 và cao hơn. Việc lựa chọn một thói quen nội suy cụ thể phụ thuộc vào dữ liệu. cho dù nó là một chiều, được đưa ra trên một lưới có cấu trúc hay không có cấu trúc. Một yếu tố khác là độ mịn mong muốn của bộ nội suy. Tóm lại, các quy trình được khuyến nghị cho phép nội suy có thể được tóm tắt như sau

Tốt bụng

lịch trình

liên tục

bình luận

1D

tuyến tính

numpy.interp

từng phần liên tục

đến từ numpy

spline khối

CubicSpline

đạo hàm bậc 2

spline khối đơn điệu

PchipInterpolator

đạo hàm thứ nhất

không vượt quá

spline không lập phương

make_interp_spline

[k-1] đạo hàm thứ

k=3 tương đương với CubicSpline

gần nhất

naturalneighbor.griddata0

loại=’gần nhất’, ‘trước đó’, ‘tiếp theo’

đường cong N-D

gần nhất, tuyến tính, spline

make_interp_spline

[k-1] đạo hàm thứ

sử dụng mảng N-dim y

Lưới N-D thông thường [tuyến tính]

gần nhất

naturalneighbor.griddata2

phương pháp = 'gần nhất'

tuyến tính

phương pháp = 'tuyến tính'

splines

đạo hàm bậc 2

method=’cubic’, ‘quintic’

splines đơn điệu

dẫn xuất thứ nhất

phương pháp = 'pchip'

N-D rải rác

gần nhất

numpy.interp0

bí danh. numpy.interp1

tuyến tính

numpy.interp2

hình khối [chỉ 2D]

numpy.interp3

dẫn xuất thứ nhất

hàm cơ sở xuyên tâm

numpy.interp4

Để làm mịn dữ liệu, các chức năng được cung cấp cho dữ liệu 1 và 2-D bằng cách sử dụng các đường nối khối, dựa trên thư viện FORTRAN FITPACK.

Ngoài ra, các quy trình được cung cấp để nội suy/làm trơn bằng cách sử dụng các hàm cơ sở xuyên tâm với một số nhân.

Thông tin chi tiết được đưa ra trong các liên kết dưới đây

  • Nội suy 1-D
    • Nội suy tuyến tính từng phần
    • spline khối
    • Nội suy đơn điệu
    • Nội suy với B-splines
    • Đường cong spline tham số
    • Giao diện kế thừa cho phép nội suy 1-D [naturalneighbor.griddata0]
    • Dữ liệu bị mất
  • Đa thức từng phần và splines
    • Thao tác đối tượng numpy.interp6
    • B-splines. nút thắt và hệ số
      • Phần tử cơ sở B-spline
      • Thiết kế ma trận trên cơ sở B-spline
  • Làm mịn splines
    • Làm mịn Spline trong 1-D
      • Thủ tục [numpy.interp7]
      • Hướng đối tượng [numpy.interp8]
    • Các splines làm mịn 2-D
      • Bivariate spline khớp dữ liệu phân tán
      • Bivariate spline khớp dữ liệu trên lưới
      • Bivariate spline khớp dữ liệu trong tọa độ hình cầu
  • Nội suy dữ liệu đa biến trên lưới thông thường [naturalneighbor.griddata2]
    • Dữ liệu cách đều nhau
  • Nội suy dữ liệu phân tán [numpy.interp1]
  • Sử dụng các hàm cơ sở xuyên tâm để làm mịn/nội suy
    • Ví dụ 1-D
    • Ví dụ 2 chiều
  • Mẹo và thủ thuật ngoại suy
    • naturalneighbor.griddata0. sao chép các giá trị điền vào bên trái và bên phải của numpy.interp
    • CubicSpline mở rộng các điều kiện biên
    • Thực hiện thủ công các tiệm cận
      • thiết lập
      • Sử dụng các tiệm cận đã biết
    • Ngoại suy trong CubicSpline3

Chủ Đề