Какой самый быстрый способ перейти от списка, который описывает температуру на мелкой сетке, к списку, который описывает темп.на грубой сетке с питоном? - PullRequest
0 голосов
/ 28 декабря 2018

Например, скажем, у меня есть список, в котором индексом списка является конкретный номер ячейки, а значением этого индекса является температура этой конкретной ячейки.Допустим, список выглядит следующим образом:

fine_mesh = [600,625,650,675,700,725,750,775,800,825]

Затем, скажем, мы хотим создать более грубую сетку, уменьшив количество ячеек в сетке в 2 раза, поэтому мы хотимберем среднюю температуру последовательных групп из двух ячеек.Фактор того, что более мелкая сетка сводится к более грубой, может быть любым числом.

Итак, в этом примере,

coarse_mesh = [612.5,662.5,712.5,762.5,812.5]

Какой самый быстрый способ сделать это с python?Скорость имеет значение, потому что могут быть сотни тысяч клеток.Можно использовать библиотеки с открытым исходным кодом, такие как numpy.

Заранее спасибо!:)

Ответы [ 2 ]

0 голосов
/ 28 декабря 2018

Используя numpy, вы можете векторизовать сложение (и умножение и т. Д.) И использовать срезы, чтобы сделать следующее

import numpy as np
# ... snip ...
fine_mesh = np.array(fine_mesh)
coarse_mesh = 0.5 * (fine_mesh[::2] + fine_mesh[1::2])

Поскольку это numpy, оно, вероятно, будет быстрее, чемпонимание списка

0 голосов
/ 28 декабря 2018

Вы можете использовать список :

fine_mesh=[600,625,650,675,700,725,750,775,800,825]
coarse_mesh = [(a + b) / 2 for a, b in  zip(fine_mesh[::2], fine_mesh[1::2])]
print(coarse_mesh)

Или, если вы предпочитаете numpy, вы можете использовать numpy.mean :

import numpy as np

fine_mesh=[600,625,650,675,700,725,750,775,800,825]
coarse_mesh = np.mean(np.array(fine_mesh).reshape(-1, 2), 1)
print(coarse_mesh.tolist())

Выход

[612.5, 662.5, 712.5, 762.5, 812.5]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...