Среднее число двух массивов с разными базовыми x-масштабами в Python - PullRequest
2 голосов
/ 02 мая 2019

У меня есть два разных набора данных x против y в Python, где x - длина волны, а y - поток. Пример:

import numpy as np
wv_arr_1 = np.array([5564.0641521, 5566.43488632, ..., 8401.83301412])
flux_arr_1 = np.array([2.7731672e-15, 2.7822637e-15, ..., 8.0981220e-16])

wv_arr_2 = np.array([5109.3259116, 5111.34467782, ..., 7529.82661321])
flux_arr_2 = np.array([2.6537110e-15, 3.7101513e-15, ..., 2.9433518e-15])

, где ... представляет множество дополнительных чисел между ними, и массивы могут необязательно иметь одинаковую длину. Я хотел бы по существу усреднить мои два набора данных (значения потока), что было бы легко, если бы масштабы длины волны были точно такими же. Но так как это не так, я не уверен, как лучше подойти к этому. Я хочу закончить с одним массивом длин волн и одним массивом потоков, который инкапсулирует среднее из моих двух наборов данных, но, конечно, значения могут быть усреднены только на тех же (или достаточно близких) длинах волн. Как Pythonic способ сделать это?

1 Ответ

0 голосов
/ 02 мая 2019

Ваш вопрос немного открыт с научной точки зрения. То, что вы хотите сделать, имеет смысл complete , если два набора данных должны соответствовать одной и той же базовой функции почти точно , так что шум незначителен.

В любом случае, первое, что вы можете сделать, это отобразить оба ваших набора данных в общий массив длин волн. Для этого вам необходимо интерполировать оба набора данных в 1d сетке длин волн по вашему выбору. Опять же, если данные слишком шумные, тогда интерполяция не будет иметь большого смысла. Но если наборы данных гладкие, то вы можете уйти, даже если линейная интерполяция . После того, как оба набора данных будут интерполированы на общую сетку длин волн, вы можете тривиально взять их среднее значение. Обратите внимание, что это будет работать только в том случае, если плотность выборки достаточно велика, чтобы любые более крупные объекты в спектрах были хорошо сопоставлены обоими отдельными наборами данных.

Если ваши данные слишком шумные, возможно, единственное разумное, что вы можете сделать, - это взять объединение наборов данных и добавить функцию из образованного предположения в объединенный спектр , Для этого вам нужно иметь очень хорошее представление о том, как должны выглядеть ваши данные, но я не думаю, что есть решение общего назначения, которое может помочь вам в этом случае, не вводя неконтролируемые артефакты в ваши данные.

...