Hướng dẫn python fastest interpolation - nội suy nhanh nhất trong python

Tôi có một số dữ liệu trên một lưới nhất quán như một cái dưới, trong đó mỗi điểm có một số giá trị vô hướng:

Hướng dẫn python fastest interpolation - nội suy nhanh nhất trong python

Tôi muốn nội suy vô hướng lên một lưới thông thường như một cái dưới đây:

Hướng dẫn python fastest interpolation - nội suy nhanh nhất trong python

Hiện tại tôi đang sử dụng scipy.Interpolate.griddata, nhưng nó hơi chậm. Tôi có 162000 tệp dữ liệu cần được nội suy theo cùng một cách (và nhiều hơn trong tương lai), và do đó, một thuật toán nhanh hơn nhiều sẽ được mong muốn. Tất cả các tệp dữ liệu có vô hướng cần được nội suy với cấu trúc lưới chính xác.

Một ví dụ đồ chơi đơn giản được cung cấp dưới đây:

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata

inputGrid = np.array([
     [-9.00000000e+01,  4.92919128e-07],
     [-9.00000000e+01,  6.34349493e+01],
     [ 9.00000000e+01, -6.34349493e+01],
     [ 9.00000000e+01, -4.92919128e-07],
     [ 2.77323013e+01, -1.60450574e+01],
     [-2.77323013e+01,  1.60450574e+01],
     [ 1.52267699e+02, -1.60450574e+01],
     [-1.52267699e+02,  1.60450574e+01],
     [ 1.39613822e+02,  4.63530726e+01],
     [ 4.03861780e+01,  4.63530726e+01],
     [-1.39613822e+02, -4.63530726e+01],
     [-4.03861780e+01, -4.63530726e+01]])

randomScalar = np.random.random(inputGrid.shape[0])
outputGrid = np.array([[i, j] for i in np.arange(-180, 180, 30) for j in np.arange(-90, 90, 20)])
interpolatedScalar = griddata(inputGrid, randomScalar, outputGrid, method='nearest')

plt.scatter(inputGrid[:, 0], inputGrid[:, 1], c=randomScalar, s=100)
plt.scatter(outputGrid[:, 0], outputGrid[:, 1], c=interpolatedScalar, s=10)

Hướng dẫn python fastest interpolation - nội suy nhanh nhất trong python

Tôi cảm thấy như chúng ta có thể tận dụng hình dạng nhất quán mà dữ liệu cần được nội suy từ để tăng tốc đáng kể mọi thứ, nhưng tôi không biết liệu có bất kỳ chức năng Python nào có thể sử dụng lợi thế này không.

Cụ thể, tôi đang chuyển đổi dữ liệu vô hướng từ một icosphere thành quả cầu UV. Có lẽ có những chức năng ngoài kia đã làm điều này? Tôi đã thử các thuật toán nội suy 3D, nhưng chúng chậm hơn nhiều so với phương pháp GridData.

Bất kỳ đề xuất?

Nội suy tuyến tính là kỹ thuật xác định các giá trị của các hàm của bất kỳ điểm trung gian nào khi các giá trị của hai điểm liền kề được biết đến. Nội suy tuyến tính về cơ bản là ước tính của một giá trị chưa biết nằm trong hai giá trị đã biết. Nội suy tuyến tính được sử dụng trong các ngành khác nhau như thống kê, kinh tế, xác định giá, v.v ... Nó được sử dụng để lấp đầy khoảng trống trong dữ liệu thống kê để liên tục thông tin. & NBSP;

Nội dung chính ShowShow

  • How do you do interpolation in Python?
  • Làm thế nào để bạn thực hiện nội suy tuyến tính?
  • Làm thế nào để bạn nội suy trong Pandas Python?
  • Ví dụ #1: Sử dụng hàm Interpolate () để điền các giá trị bị thiếu bằng phương thức tuyến tính ..

Đầu ra:.

  • Ví dụ #2: Sử dụng hàm nội suy () để nội suy các giá trị bị thiếu theo hướng ngược bằng phương pháp tuyến tính và đặt giới hạn về số lượng tối đa các giá trị NA liên tiếp có thể được điền ..
  • Làm thế nào để bạn thực hiện nội suy tuyến tính?
  • Làm thế nào để bạn nội suy trong Pandas Python?
  • Ví dụ #1: Sử dụng hàm Interpolate () để điền các giá trị bị thiếu bằng phương thức tuyến tính ..

Đầu ra:.

Ví dụ #2: Sử dụng hàm nội suy () để nội suy các giá trị bị thiếu theo hướng ngược bằng phương pháp tuyến tính và đặt giới hạn về số lượng tối đa các giá trị NA liên tiếp có thể được điền ..(x1, y1) are the coordinates of the first data point. And (x2,y2) are coordinates of the second data point, where x is the point on which we perform interpolation and y is the interpolated value.

Vấn đề ví dụ:

Hãy để một ví dụ để hiểu rõ hơn. Chúng ta có các giá trị dữ liệu sau trong đó x biểu thị số và y là hàm của căn bậc hai của x. Nhiệm vụ của chúng tôi là tìm căn bậc hai của 5.5 (x).5.5 (x).5.5 (x).

x

1

2

3

4

5

6

y (f (x) = x) & nbsp;

1

1.4142

1.7320

2

2.2360

2.4494

Chúng ta có thể sử dụng phương pháp nội suy tuyến tính ở đây.

1. Tìm hai liền kề & nbsp; (x1, y1), (x2, y2) từ x. tức là (5,2.2360) và (6.2.4494).

Trong đó x1 = 5, x2 = 6, y1 = 2.2360, y2 = 2.4494 và chúng tôi nội suy tại điểm x = 5.5.

2. Sử dụng công thức y (x) & nbsp; = & nbsp; y1 & nbsp;+ & nbsp; (x - x1) & nbsp;

3. Sau khi đặt các giá trị vào phương trình trên. & NBSP;

y = 2.3427

Tại x = 5,5, giá trị của y sẽ là 2.3427. Vì vậy, bằng cách sử dụng phép nội suy tuyến tính, chúng ta có thể dễ dàng xác định giá trị của hàm giữa hai khoảng.2.3427. So by using linear interpolation we can easily determine the value of a function between two intervals.2.3427. So by using linear interpolation we can easily determine the value of a function between two intervals.

Tiếp cận 1:

Sử dụng công thức & nbsp;

Ví dụ: Giả sử chúng ta có một bộ dữ liệu về dân số của một thành phố và năm.Suppose we have a dataset of the population of a city and the year.Suppose we have a dataset of the population of a city and the year.

X(Year)

2016

2017

2018

2019

2021

Y(Population)

10001

12345

74851

12124

5700

Ở đây, x là năm và y là dân số ở bất kỳ thành phố nào. Nhiệm vụ của chúng tôi là tìm thấy dân số của thành phố vào năm 2020.2020.2020.

Chúng tôi chọn (x1, y1), (x2, y2) của chúng tôi là x1 = 2019, y1 = 12124, x2 = 2021, & nbsp; y2 = 5700, x = 2020, y =?

Ở đây (x1, y1) và (x2, y2) là hai điểm liền kề và x là năm mà chúng tôi muốn dự đoán giá trị của dân số Y.

Python3

def interpolation(d, x):

y = 2.3427
0____ ____.

y = 2.3427
0interpolation(d, x):6 interpolation(d, x):7

interpolation(d, x):8

y = 2.3427
5
y = 2.3427
00
y = 2.3427
01
y = 2.3427
02
y = 2.3427
03
y = 2.3427
04
y = 2.3427
05
y = 2.3427
02
y = 2.3427
07
y = 2.3427
08

y = 2.3427
09
y = 2.3427
5
Population on year 2020 is 8912.0
71

Các

Population on year 2020 is 8912.0
78
Population on year 2020 is 8912.0
79

Đầu ra

Population on year 2020 is 8912.0

Tiếp cận 2:

Sử dụng scipy.Interpolate.Interp1d

Tương tự, chúng ta có thể đạt được phép nội suy tuyến tính bằng cách sử dụng chức năng thư viện SCIPY gọi là Interpolate.Interp1d.interpolate.interp1d.interpolate.interp1d.

Cú pháp: scipy.Interpolate.Interp1d (x, y, kint = hồi tuyến tính, trục =- 1, sao chép = true, bound_error = none : scipy.interpolate.interp1d(x, y, kind=’linear’, axis=- 1, copy=True, bounds_error=None, fill_value=nan, assume_sorted=False) : scipy.interpolate.interp1d(x, y, kind=’linear’, axis=- 1, copy=True, bounds_error=None, fill_value=nan, assume_sorted=False)

Sr. không. & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

Tham số & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

Sự mô tả

1.

x

y (f (x) = x) & nbsp;

2.

Chúng ta có thể sử dụng phương pháp nội suy tuyến tính ở đây.

1. Tìm hai liền kề & nbsp; (x1, y1), (x2, y2) từ x. tức là (5,2.2360) và (6.2.4494).

3.

Trong đó x1 = 5, x2 = 6, y1 = 2.2360, y2 = 2.4494 và chúng tôi nội suy tại điểm x = 5.5.

2. Sử dụng công thức y (x) & nbsp; = & nbsp; y1 & nbsp;+ & nbsp; (x - x1) & nbsp;linear.

4.

3. Sau khi đặt các giá trị vào phương trình trên. & NBSP;

Tại x = 5,5, giá trị của y sẽ là 2.3427. Vì vậy, bằng cách sử dụng phép nội suy tuyến tính, chúng ta có thể dễ dàng xác định giá trị của hàm giữa hai khoảng.2.3427. So by using linear interpolation we can easily determine the value of a function between two intervals.

5.

Tiếp cận 1:

Sử dụng công thức & nbsp;

6.

bounds_error

Ví dụ: Giả sử chúng ta có một bộ dữ liệu về dân số của một thành phố và năm.Suppose we have a dataset of the population of a city and the year.

Example:

Ở đây, x là năm và y là dân số ở bất kỳ thành phố nào. Nhiệm vụ của chúng tôi là tìm thấy dân số của thành phố vào năm 2020.2020.

Chúng tôi chọn (x1, y1), (x2, y2) của chúng tôi là x1 = 2019, y1 = 12124, x2 = 2021, & nbsp; y2 = 5700, x = 2020, y =?

Python3

Ở đây (x1, y1) và (x2, y2) là hai điểm liền kề và x là năm mà chúng tôi muốn dự đoán giá trị của dân số Y.

def interpolation(d, x):

y = 2.3427
0____ ____.

y = 2.3427
0interpolation(d, x):6 interpolation(d, x):7

Các

Population on year 2020 is 8912.0
72
Population on year 2020 is 8912.0
73

Population on year 2020 is 8912.0
09
Population on year 2020 is 8912.0
75
Population on year 2020 is 8912.0
76
Population on year 2020 is 8912.0
12
Population on year 2020 is 8912.0
13
Population on year 2020 is 8912.0
14

Đầu ra

Tiếp cận 2:

How do you do interpolation in Python?

Sử dụng scipy.Interpolate.Interp1d.

Tương tự, chúng ta có thể đạt được phép nội suy tuyến tính bằng cách sử dụng chức năng thư viện SCIPY gọi là Interpolate.Interp1d.interpolate.interp1d.

Cú pháp: scipy.Interpolate.Interp1d (x, y, kint = hồi tuyến tính, trục =- 1, sao chép = true, bound_error = none : scipy.interpolate.interp1d(x, y, kind=’linear’, axis=- 1, copy=True, bounds_error=None, fill_value=nan, assume_sorted=False)

Sr. không. & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

Tham số & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

Sự mô tảy = y1 + ((x – x1) / (x2 – x1)) * (y2 – y1), where x is the known value, y is the unknown value, x1 and y1 are the coordinates that are below the known x value, and x2 and y2 are the coordinates that are above the x value.

Làm thế nào để bạn nội suy trong Pandas Python?

Ví dụ #1: Sử dụng hàm Interpolate () để điền các giá trị bị thiếu bằng phương thức tuyến tính ..

Đầu ra:.

Ví dụ #2: Sử dụng hàm nội suy () để nội suy các giá trị bị thiếu theo hướng ngược bằng phương pháp tuyến tính và đặt giới hạn về số lượng tối đa các giá trị NA liên tiếp có thể được điền ..

Đầu ra:.

Ví dụ #2: Sử dụng hàm nội suy () để nội suy các giá trị bị thiếu theo hướng ngược bằng phương pháp tuyến tính và đặt giới hạn về số lượng tối đa các giá trị NA liên tiếp có thể được điền ..

Ý nghĩa của phép nội suy trong Python là gì?a method for generating points between given points. For example: for points 1 and 2, we may interpolate and find points 1.33 and 1.66. Interpolation has many usage, in Machine Learning we often deal with missing data in a dataset, interpolation is often used to substitute those values.a method for generating points between given points. For example: for points 1 and 2, we may interpolate and find points 1.33 and 1.66. Interpolation has many usage, in Machine Learning we often deal with missing data in a dataset, interpolation is often used to substitute those values.