gpt4 book ai didi

ruby - 使用 Ruby NArray 选择低于阈值并锚定在左侧或右侧的值

转载 作者:数据小太阳 更新时间:2023-10-29 07:18:44 24 4
gpt4 key购买 nike

使用 NArray,是否有一些巧妙的方法来创建值低于的数组掩码,例如5,但仅适用于锚定在左侧或右侧的值运行,例如这个一维数组:

[3, 4, 5, 7, 1, 7, 8]

会导致:

[1, 1, 0, 0, 0, 0, 0]

还有这个二维数组:

[[2, 4, 5, 7, 1, 2, 3], 
[3, 4, 5, 7, 1, 7, 8],
[8, 1, 1, 7, 1, 7, 1]]

会导致:

[[1, 1, 0, 0, 1, 1, 1], 
[1, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 0, 0, 0, 1]]

最佳答案

require "narray"

def anchor_mask(mask)
idx = (mask.not).where
y = idx/mask.shape[0]
u = (y[0..-2].ne y[1..-1]).where
t = [0] + (u+1).to_a + [idx.size]
s = (0..u.size).map{|i| idx[t[i]]..idx[t[i+1]-1]}
mask[s] = 0
return mask
end

a = NArray[3, 4, 5, 7, 1, 7, 8]

p anchor_mask a.lt(5)
#=> NArray.byte(7):
# [ 1, 1, 0, 0, 0, 0, 0 ]

a = NArray[[2, 4, 5, 7, 1, 2, 3],
[3, 4, 5, 7, 1, 7, 8],
[8, 1, 1, 7, 1, 7, 1]]

p anchor_mask a.lt(5)
#=> NArray.byte(7,3):
# [ [ 1, 1, 0, 0, 1, 1, 1 ],
# [ 1, 1, 0, 0, 0, 0, 0 ],
# [ 0, 0, 0, 0, 0, 0, 1 ] ]

关于ruby - 使用 Ruby NArray 选择低于阈值并锚定在左侧或右侧的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9213947/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com