FiPy设置初始网格值

时间:2017-01-04 16:34:44

标签: python numpy fipy

我是一个用例,我需要将值从2D Numpy数组转换为2D 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 个答案:

答案 0 :(得分:2)

你说&#34;转置&#34;,但你的例子似乎是一个简单的数据传输,没有交换轴或数据范围。将2D numpy数组中的值移动到Grid2D上定义的FiPy CellVariable应该像展平数组一样简单:

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