首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在大数据中找到移动子集中的最大值

在大数据中找到移动子集中的最大值
EN

Stack Overflow用户
提问于 2018-06-07 05:17:50
回答 1查看 46关注 0票数 1

我有一个大型的dataframe (1000x1000),我想在子集中找到所有的最大值。

代码语言:javascript
运行
AI代码解释
复制
mat = diag(10-abs(-10:10))  # test matrix

我试图在接下来的3个步骤中使用for循环,但是它没有工作:

  1. 提取连续的3x3子集,
  2. 找出每个里面的最大值,
  3. 然后将子集的所有值更改为0,最大值更改为1。

代码

代码语言:javascript
运行
AI代码解释
复制
for (x in (1+2):(nrow(mat)-2)){ 
    for (y in (1+2):(ncol(mat)-2)){
        subset = mat[x:(x+2), y:(y+2)]
        wm = which.max(subset)
        mat[row(subset)[wm], col(subset)[wm]] == 1
    }}

如有任何意见或更正,欢迎:

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-07 06:17:59

也许是这样的:

代码语言:javascript
运行
AI代码解释
复制
set.seed(123)
m<-matrix(rnorm(100),ncol=10)
m.max<- matrix(0, ncol=ncol(m), nrow=nrow(m))
for(i in 2:(nrow(m)-1)){
  for(j in 2:(ncol(m)-1)){
    subset<-m[(i-1):(i+1),(j-1):(j+1)]
    idx <-which(subset == max(subset), arr.ind = TRUE)
    m.max[(i+idx[1]-2),(j+idx[2]-2)]<-1
  }
}
m.max

请注意,在每个步骤中不一定会产生新的"1“,因为最大的两个重叠子集可以是相同的条目。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50742287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档