FiPy Установка начальных значений сетки

Я пользуюсь случаем, когда мне нужно перенести значения из двумерного массива Numpy в двумерную сетку FiPy, которая затем будет использоваться для решения системы.

Мой код выглядит следующим образом:

for x in range(0, size[0]):
            for y in range(0, size[1]):
                source.setValue(tmpSource.getGrid()[x][y], where=(X < x + 1) & (X > x) & (Y > y) & (Y < y + 1))
                sink.setValue(tmpSink.getGrid()[x][y], where=(X < x + 1) & (X > x) & (Y > y) & (Y < y + 1))

Где tmpSource и tmpSink - это массивы Numpy.

Хотя этот подход работает, он работает крайне медленно. Кто-нибудь есть какие-либо советы по альтернативным подходам, которые могли бы сделать это быстрее?

Спасибо!

1 ответ

Решение

Вы говорите "транспонировать", но ваш пример - это простая передача данных без замены осей или диапазонов данных. Перемещение значений из двумерного массива в FiPy CellVariable, определенное в Grid2D, должно быть таким же простым, как выравнивание массива:

source.value = tmpSource.getGrid().flatten()
sink.value = tmpSink.getGrid().flatten()
Другие вопросы по тегам