gpt4 book ai didi

Scala:折叠二维数组

转载 作者:行者123 更新时间:2023-12-02 08:29:25 25 4
gpt4 key购买 nike

给定一个可能很大的图像(或二维数字数组),我想遍历所有像素(或数字),例如计算所有黑色的(或 0 个值)。

我知道我可以简单地使用 for comprehension like

for (y <- 0 until img.height; x <- 0 until img.width) {
...
}

但是我需要一个可变变量来进行计数。这可能不是真正的问题,但假设我不想要这个并且想使用更实用的样式,我该怎么做而不创建具有宽度 x 高度元素的大型数据结构(换句话说保持内存 - 0 unt img.height0 until img.width 范围的效率)?

最佳答案

映射集合,将内部的转换为子计数,然后对它们求和:

scala> val m = Array(
Array("B","B","W"),
Array("W","W","B"),
Array("W","W","W")
)
m: Array[Array[String]] = Array(Array(B, B, W), Array(W, W, B), Array(W, W, W))

scala> m.map(_.count(_ == "B")).sum
res0: Int = 3

编辑

您可以使用

创建一个 Stream
Stream.tabulate(img.height, img.width)(identity)

然后使用

stream.count(isBlack)

请注意 Stream.tabulate最多接受 5 个维度(作为其第一个参数)。

关于Scala:折叠二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28584852/

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