如何通过起止元组构造CartesianIndices?求简便替代方案
Julia中用起止元组构造CartesianIndices的简便方法
有两种简便方式可以实现需求:
直接用元组推导式生成范围元组
利用zip将起止元组的对应维度配对,推导生成每个维度的区间后传入CartesianIndices:start = (2, 3) end_idx = (4, 5) # 避免和关键字end重名 ci = CartesianIndices(Tuple(s:e for (s, e) in zip(start, end_idx)))生成的结果和
CartesianIndices((2:4, 3:5))完全一致。封装辅助函数(适合重复使用)
如果需要频繁通过起止元组构造CartesianIndices,可以自定义构造函数:CartesianIndices(start::Tuple, stop::Tuple) = CartesianIndices(Tuple(s:e for (s,e) in zip(start, stop)))之后直接调用即可:
ci = CartesianIndices((2,3), (4,5))
注意:起止元组的长度必须一致,否则zip会截断到较短元组的长度,导致维度缺失。
内容的提问来源于stack exchange,提问作者gTcV
相关产品推荐
相关产品推荐

