arrays - 如何在没有for in scala的情况下迭代数组?
问题描述
我有并且RDD[(BreezeMatrix[Double], Array[Int])]
我想删除Matrix
.array
例如,如果Array[1, 3, 4]
,我想从Matrix
.
我的代码是:
val viol = rdd.map(x => for (p <- x._2) {val c = x._1.delete(p, Axis._0)})
但是对于开始我得到Unit
作为返回类型,即使我返回矩阵。此外,我想知道在 scala 中是否有更实用的方法。
解决方案
更实用的方法是迭代要删除的索引数组,并在迭代步骤之间累积状态。为此,您可以使用foldLeft。foldLeft适用于元素集合,在您的情况下是要删除的索引数组:
rdd.map{
case (matrix, toDelete) =>
toDelete.foldLeft(matrix){case (acc, index) => acc.delete(index, Axis._0)}
}
推荐阅读
- ios - 从通知负载中获取 URL 并将其设置为 Swift 5 中 WKWebView 的 URLRequest url
- html - 如何使边框居中
- python - 拼音的所有 Python 排列组合(普通话罗马化)
- php - Laravel 8 - 可信代理。在“fideloper/TrustedProxy”和“TrustProxies 中间件”之间感到困惑
- cordova - 获取 android 的本机目标时出错:未找到有效的 Android SDK 根目录
- pyspark - 使用点或括号表示法选择时列的空值,但在使用 UDF 时不
- javascript - 使用 axios 通过 promise .then 表示法传递数据
- android - 如何在android的BottomAppBar中添加文本
- c# - 使用 jquery 对话框删除 gridview 行
- google-play-console - 尝试在新的 Google Play 控制台上将分阶段部署更新到 100.0 时出现错误代码 7B73D32B