小编Joo*_*zan的帖子

numpy二进制光栅图像到多边形变换

我想将2d numpy数组转换为多边形.性能对我来说非常重要,但我想避免进行C扩展.可以通过侵蚀来制作二进制轮廓图像.然后我发现了这个.它太慢了,有时无法应对侵蚀造成的尖峰.尖峰:

000100
000100
000100
111011
Run Code Online (Sandbox Code Playgroud)

我的第一次尝试:

mat = mat.copy() != 0
mat = mat - scipy.ndimage.binary_erosion(mat)

vertices = np.argwhere(mat)
minx = vertices.min(axis=0)[0]
maxx = vertices.max(axis=0)[0]

vertices_sorted = {}
for x in xrange(minx - 1, maxx + 2):
    vertices_sorted[x] = []

for vertex in vertices:
    vertices_sorted[vertex[0]].append(vertex[1])

vertex_loop = [(minx, vertices_sorted[minx][0])]
while True:
    x, y = vertex_loop[-1]
    for column, row in ((x, y + 1), (x, y - 1), 
    (x + 1, y), (x + 1, y + 1), …
Run Code Online (Sandbox Code Playgroud)

python numpy

5
推荐指数
1
解决办法
2595
查看次数

如何在Elm中结合结果和状态?

我为榆树缺少单子而苦苦挣扎。实现Elm状态monad的库(http://package.elm-lang.org/packages/folkertdev/elm-state/latest/State)对我有很大帮助。

问题是,当我只想分别使用Result和State类型时,现在遇到了交替嵌套的Result和State类型的情况。

我尝试编写具有以下签名的函数,但似乎不可能,因为内部Result仅在评估外部State后才知道。

join : Result a (State s (Result a (State s x))) -> Result a (State s x)
Run Code Online (Sandbox Code Playgroud)

如果我将Result放入返回值中的State中,则可能会起作用,但是如果外部Result为,那会生成一个哑状态Err

我认为正确的想法是做出既是结果又是状态的东西。熟悉Haskell monad变压器的人可以解释他们如何解决此类问题或提出替代解决方案吗?

这是一个出现问题的地方的粗略版本:

  generateConstraints environment value
  |> Result.map (State.map (\(value, valueC) ->
    Result.map
      (State.map2 (\this (body, bodyC) ->
        ( this
        , valueC ++ bodyC ++ [(this, body)]
        ))
      freshTypevar)
      (generateConstraints (extend environment name value) body))
  )
Run Code Online (Sandbox Code Playgroud)

monads haskell monad-transformers elm

5
推荐指数
1
解决办法
316
查看次数

为什么包含Box的枚举不可复制?

盒子和数组是可复制的,为什么这不能编译?

#[derive(Debug, Copy, Clone)]
enum Octree{
    Branch(Box<[Octree; 8]>),
    Filled,
    Empty,
}
Run Code Online (Sandbox Code Playgroud)

编译错误:

main.rs:3:17: 3:21 error: the trait `Copy` may not be implemented for this type; variant `Branch` does not implement `Copy` [E0205]
Run Code Online (Sandbox Code Playgroud)

编辑:好的,所以我不想Octree复制.但是我如何让它变得可变?我希望能够更改节点的子节点.

rust

3
推荐指数
1
解决办法
402
查看次数

标签 统计

elm ×1

haskell ×1

monad-transformers ×1

monads ×1

numpy ×1

python ×1

rust ×1