Julia中如何不使用∉符号筛选向量排除指定元素?
Julia向量排除指定位置元素的替代写法
针对你提到的需求(从向量c = [10, 12, 13, 11]中选取除第2、3个元素外的所有元素),这里提供几种无需使用∉符号的替代写法,完全兼容LaTeX等需要ASCII符号的场景:
方法1:利用
setdiff求位置差集
直接计算所有索引与要排除的索引的差集,再用差集索引向量:c = [10, 12, 13, 11] c[setdiff(1:end, [2, 3])] # 输出 [10, 11]这种写法直观易懂,
setdiff是Julia标准库函数,用于求两个集合的差集,完全使用ASCII符号,LaTeX中可以轻松排版。方法2:用
map和in生成布尔掩码
通过map遍历所有索引,判断是否不在目标排除集合中,生成布尔索引:c[.!map(x -> x in (2, 3), 1:length(c))] # 输出 [10, 11]这里
in是ASCII关键字,!表示取反,所有符号都能在LaTeX中正常显示。方法3:手动构造布尔索引(适合固定长度向量)
如果向量长度固定,可以直接写出布尔索引数组:c[[true, false, false, true]] # 输出 [10, 11]这种写法最直接,但仅适用于长度已知的场景。
方法4:广播
!和in组合
用广播语法结合in和取反操作,实现与原代码等价的逻辑:c[.!((x -> x in (2, 3)).(1:end))] # 输出 [10, 11]同样全部使用ASCII符号,逻辑与原代码一致,只是替换了
∉为!in的组合形式。
内容的提问来源于stack exchange,提问作者mathslover
相关产品推荐
相关产品推荐

