0

我是一个用例,我需要将值从 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 数组。

虽然这种方法有效,但运行起来非常缓慢。有人对可以使其更快的替代方法有任何建议吗?

谢谢!

4

1 回答 1

2

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

source.value = tmpSource.getGrid().flatten()
sink.value = tmpSink.getGrid().flatten()
于 2017-01-05T20:43:28.677 回答