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()