Python FiPy设置初始栅格值

Python FiPy设置初始栅格值,python,numpy,fipy,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 <

我是一个用例,需要将值从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))
范围(0,大小[0])内的x的
:
对于范围(0,大小[1])中的y:
source.setValue(tmpSource.getGrid()[x][y],其中=(xx)&(y>y)&(yx)&(y>y)&(y
其中,tmpSource和tmpSink称为Numpy数组

虽然这种方法有效,但运行速度非常慢。有没有人对其他方法有什么建议,可以让它更快

谢谢

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

source.value = tmpSource.getGrid().flatten()
sink.value = tmpSink.getGrid().flatten()
您说的是“转置”,但您的示例似乎是一个简单的数据传输,没有交换数据轴或数据范围。将值从2D numpy数组移动到Grid2D上定义的FiPy CellVariable中应该与展平数组一样简单:

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

你是对的,转置是一个错误的词语选择,我很抱歉:)你的解决方案有效,谢谢!你是对的,转置是一个错误的词语选择,我很抱歉:)你的解决方案有效,谢谢!