2017-01-04 2 views
0

Я являюсь usecase, из-за чего мне нужно транспонировать значения из массива 2D Numpy в сетку 2D FiPy, которая затем будет использоваться для решения системы.Настройка исходных значений сетки 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 массивы.

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

Спасибо!

ответ

2

Вы говорите «транспонировать», но ваш пример представляет собой простую передачу данных без перестановки осей или диапазонов данных. Перемещение значения из 2D Numpy массива в FiPy CellVariable, определенный на Grid2D должно быть столь же просто, как уплощение массива:

source.value = tmpSource.getGrid().flatten() 
sink.value = tmpSink.getGrid().flatten() 
+0

Вы правы, перенося был неправильным выбором слова, мои извинения :) И ваше решение работает, спасибо! – MrD