如何简洁实现遍历数组判断元素生成对应0/1值的新数组
简洁实现方案
你写的多层循环逻辑可以用逐元素广播操作一行完成,完全适配任意维度的数组:
# 直接生成新数组B B = Int.(A .>= 1)
原理解释
A .>= 1是逐元素对A的所有值做大于等于1的判断,输出和A维度完全一致的布尔数组,满足条件的位置为true,不满足为falseInt.()是逐元素做类型转换,Julia中布尔值属于整数子类,true会直接转换为1,false转换为0,刚好匹配你的赋值需求
如果已经提前初始化了B数组,想要原地修改避免额外内存开销,可以用点等赋值写法:
B .= Int.(A .>= 1)
这个写法不需要手动处理维度、写多层循环,通用性更强,且广播操作经过官方底层优化,执行效率不会低于手动实现的循环。
内容的提问来源于stack exchange,提问作者qwebfub3i4u
相关产品推荐
相关产品推荐

