如何在Uiua中对二维数组执行过滤操作?
Uiua 二维数组的元素过滤实现
在Uiua里,一维数组的元素过滤可以通过▽ keep快速完成,示例代码如下:
1_2_3_4 ▽>2. [3 4]
但对二维数组执行相同过滤时,直接套用一维的写法会报错,以下是几种无效尝试及对应的错误信息:
- 直接使用
▽>2.:
[1_2_3 4_5_6] ▽>2. Error: Keep amount must be a natural number or list of natural numbers, but its rank is 2
- 尝试用
≡拼接过滤结果:
[1_2_3 4_5_6] ≡(▽>2.) Error: Cannot append arrays of shapes [1 × 1] and [3]
- 先判断再过滤:
[1_2_3 4_5_6] >2. ≡▽ Error: Cannot couple arrays with shapes [1] and [3]
正确实现方式
要对二维数组的每一个子数组单独执行过滤,需要使用⊛(Map)操作符,将过滤逻辑映射到二维数组的每一行:
[1_2_3 4_5_6] ⊛(▽>2.) [[3] [5 6]]
如果需要将过滤后的结果展平为一维数组,可在后续加上≡(Flatten)操作:
[1_2_3 4_5_6] ⊛(▽>2.) ≡ [3 5 6]
内容的提问来源于stack exchange,提问作者MEMark
相关产品推荐
相关产品推荐

