首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >src_indices最佳实践

src_indices最佳实践
EN

Stack Overflow用户
提问于 2022-02-04 21:33:36
回答 1查看 43关注 0票数 1

在ver之后。3.13 src_indices被更改了,我在docs中找不到它。您能否共享一个用于连接大矩阵的较小部分的示例代码?

即源为5x5矩阵,目标为2x2,从2,3开始。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-05 14:08:39

我发现把连接看作切片是最容易的。我们通过切片表示法添加了om.slicer来处理索引。下面的示例连接5x5矩阵的2x2部分,从索引2、3开始

代码语言:javascript
复制
import openmdao.api as om
import numpy as np

print('Connecting a 2x2 submatrix of M to B')

p = om.Problem()

ivc = p.model.add_subsystem('ivc', om.IndepVarComp())
ivc.add_output('M', val=np.arange(25).reshape((5, 5)))

exec = p.model.add_subsystem('exec', om.ExecComp())

exec.add_expr('A = B', A={'shape': (2, 2)}, B={'shape': (2, 2)})

p.model.connect('ivc.M', 'exec.B', src_indices=om.slicer[2:4, 3:5])

p.setup()

p.run_model()

print('M')
print(p.get_val('ivc.M'))

print('A')
print(p.get_val('exec.A'))
代码语言:javascript
复制
Connecting a 2x2 submatrix of M to B
M
[[ 0.  1.  2.  3.  4.]
 [ 5.  6.  7.  8.  9.]
 [10. 11. 12. 13. 14.]
 [15. 16. 17. 18. 19.]
 [20. 21. 22. 23. 24.]]
A
[[13. 14.]
 [18. 19.]]

或者,例如,只将5x5矩阵中的行0、2、3连接到目标:

代码语言:javascript
复制
rint('Connecting rows 0, 2, and 3 of M to B')

p = om.Problem()

ivc = p.model.add_subsystem('ivc', om.IndepVarComp())
ivc.add_output('M', val=np.arange(25).reshape((5, 5)))

exec = p.model.add_subsystem('exec', om.ExecComp())

exec.add_expr('A = B', A={'shape': (3, 5)}, B={'shape': (3, 5)})

p.model.connect('ivc.M', 'exec.B', src_indices=om.slicer[[0, 2 ,3], :])

p.setup()

p.run_model()

print('M')
print(p.get_val('ivc.M'))

print('A')
print(p.get_val('exec.A'))
代码语言:javascript
复制
Connecting rows 0, 2, and 3 of M to B
M
[[ 0.  1.  2.  3.  4.]
 [ 5.  6.  7.  8.  9.]
 [10. 11. 12. 13. 14.]
 [15. 16. 17. 18. 19.]
 [20. 21. 22. 23. 24.]]
A
[[ 0.  1.  2.  3.  4.]
 [10. 11. 12. 13. 14.]
 [15. 16. 17. 18. 19.]]

虽然我们在一些并行化文档中讨论了这个特性,但是我们需要在连接文档中讨论这个特性,这是正确的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70993067

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档