Интерполяция / субсэмплинг трехмерных данных в питоне без VTK
То, что я хочу сделать, довольно просто, но я до сих пор не нашел простой подход:
У меня есть 3D прямолинейная сетка со значениями с плавающей запятой (следовательно, 3 координатные оси -1D массива - для центров ячеек сетки и 3D массив массива с соответствующей формой со значением для каждого центра ячейки), и я хочу интерполировать (или Вы можете назвать это подвыборкой) весь этот массив в массив с дискретизацией (например, размерный коэффициент 5) с линейной интерполяцией. Все подходы яМы видели, что это связано с 2D, а затем с 1D-интерполяцией или трюками VTK, которые Id, скорее всего, не использует (переносимость).
Может ли кто-нибудь предложить подход, который был бы эквивалентен одновременному получению ячеек 5x5x5 в трехмерном массиве, усреднении и возвращении массива в 5 раз меньше в каждом направлении?
Заранее благодарю за любые предложения
РЕДАКТИРОВАТЬ: Вот's как выглядят данные, 'd' 3D-массив, представляющий трехмерную сетку ячеек Каждая ячейка имеет скалярное значение с плавающей запятой (в моем случае давление) и 'x', 'y' и 'z' три одномерных массива, содержащие пространственные координаты ячеек каждой ячейки (см. формы и как 'х' массив выглядит так)
In [42]: x.shape
Out[42]: (181L,)
In [43]: y.shape
Out[43]: (181L,)
In [44]: z.shape
Out[44]: (421L,)
In [45]: d.shape
Out[45]: (181L, 181L, 421L)
In [46]: x
Out[46]:
array([-0.410607 , -0.3927568 , -0.37780656, -0.36527296, -0.35475321,
-0.34591168, -0.33846866, -0.33219107, -0.32688467, -0.3223876 ,
...
0.34591168, 0.35475321, 0.36527296, 0.37780656, 0.3927568 ,
0.410607 ])
Я хочу создать трехмерный массив, скажем, в форме 90x90x210 (примерно в 2 раза меньше), сначала сэмплируя координаты от осей на массивах с указанными выше размерами, а затеминтерполирования» 3D-данные в этот массив. Я не уверен, чтоинтерполирования» это правильный термин, хотя. Понижение разрешения? Усреднение? Вот's 2D срез данных: