0

Is there a simple python 3 command that replicates matlab's interp1 command over multiple columns?

data_1 contains two parameters (1 per column) that go with the time_1 time vector (data_1 is a 5 by 2 array that isn't actually used in this example so can be ignored)

data_2 contains two parameters (1 per column) that go with the time_2 time vector

import numpy as np data_2 = np.array([ [ 0.43, -0.54], [ 0.32, -0.83], [ 0.26, -0.94], [ 0.51, -0.69], [ 0.63, -0.74] ]) time_1 = np.array([ 399.87, 399.89, 399.91, 399.93, 399.95 ]) time_2 = np.array([ 399.86, 399.88, 399.90, 399.92, 399.94 ]) 

I'd like to interpolate the data_2 2D array into the time_1 time vector so both data sets will have the same time vector.

Desired output (which is just the np.interp of the two data_2 columns into the time_1 time vector and merged back into an array) is:

data_2_i = np.array([[ 0.375, -0.685], [ 0.290, -0.885], [ 0.385, -0.815], [ 0.570, -0.715], [ 0.630, -0.740]]) 

Actual arrays will contain approx 20 columns (parameters) and thousands of rows (longer time range).
I know you can just loop over each column with np.interp but I was hoping there was a more compact and faster python 3 (numpy, scipy, pandas, etc.) method that I haven't been able to track down yet. I'm still pretty new to python (more familiar with matlab).

In matlab, you can just use interp1 on the entire multi-column array to get the multi-column result (although the edge cases are handled a bit differently - NaNs vs. last entry in this example - I'm not worried about the edge case differences here).

1
  • I am not aware of such a function. Just write the 2 lines of code with looping. Here's a general post about interpolation with Py Commented Apr 7, 2020 at 6:17

1 Answer 1

0

This looks to work (just made a quick script myself):

import numpy as np def interp_multi(x_i, x, y): ncol = y.shape[1] y_i = np.zeros((len(x_i),ncol)) for i in range(ncol): y_i[:,i] = np.interp(x_i, x, y[:,i]) return y_i data_2_i = interp_multi(time_1, time_2, data_2) 
Sign up to request clarification or add additional context in comments.

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.