使用sapply代替for循环

使用sapply代替for循环,r,R,在一个项目中,我们需要将矩阵中的数字与其周围的数字取平均值。例如,想象一个3x3矩阵,如 [(1,2,3), (4,5,6), (7,8,9)]. 第一步是在矩阵周围添加填充。假设我们添加一层填充,从而得到一个5x5矩阵 [[0,0,0,0,0], [0,1,2,3,0], [0,4,5,6,0], [0,7,8,9,0], [0,0,0,0,0]]. matrix(c(0,0,0,0,0,0,1,2,3,0,0,4,5,6,0,0,7,8,9,0,0,0,0,0,

在一个项目中,我们需要将矩阵中的数字与其周围的数字取平均值。例如,想象一个3x3矩阵,如

[(1,2,3), 
 (4,5,6), 
 (7,8,9)]. 
第一步是在矩阵周围添加填充。假设我们添加一层填充,从而得到一个
5x5
矩阵

[[0,0,0,0,0], 
 [0,1,2,3,0], 
 [0,4,5,6,0], 
 [0,7,8,9,0],
 [0,0,0,0,0]]. 

matrix(c(0,0,0,0,0,0,1,2,3,0,0,4,5,6,0,0,7,8,9,0,0,0,0,0,0), nrow=5, ncol=5, byrow=T)
然后我们平均并过滤得到最终的
3x3
矩阵。该矩阵的第一行/第一列应为
(1+2+4+5)/9=1.33

现在我的代码运行正常,看起来像

for(row in (k+1):(nrow(pad.m) - k)){
for(col in (k+1):(ncol(pad.m) - k)) {
  y <- pad.m[seq(row-k, row+k), seq(col-k, col+k)]
  filter.m[row-k, col-k]<- mean(y)
}
(k+1中的行):(nrow(pad.m)-k)){ 对于(k+1中的列):(ncol(pad.m)-k){
y使用
tensorflow
。您可以使用卷积层或池层。例如:

library(tensorflow)

mymat <- matrix(c(0,0,0,0,0,0,1,2,3,0,0,4,5,6,0,0,7,8,9,0,0,0,0,0,0), nrow=5, ncol=5, byrow=T) # Your padded matrix

matrix1 <- tf$constant( array(mymat, dim=c(1,nrow(mymat),ncol(mymat),1)), dtype="float64" )
pool1 <- tf$nn$avg_pool(matrix1, c(1L,2L,2L,1L), c(1L,1L,1L,1L), "SAME")
sess <- tf$Session()
sess$run(tf$global_variables_initializer())
res <- pool1$eval(session=sess)
sess$close()
库(tensorflow)

mymat使用
tensorflow
。您可以使用卷积层或池层。例如:

library(tensorflow)

mymat <- matrix(c(0,0,0,0,0,0,1,2,3,0,0,4,5,6,0,0,7,8,9,0,0,0,0,0,0), nrow=5, ncol=5, byrow=T) # Your padded matrix

matrix1 <- tf$constant( array(mymat, dim=c(1,nrow(mymat),ncol(mymat),1)), dtype="float64" )
pool1 <- tf$nn$avg_pool(matrix1, c(1L,2L,2L,1L), c(1L,1L,1L,1L), "SAME")
sess <- tf$Session()
sess$run(tf$global_variables_initializer())
res <- pool1$eval(session=sess)
sess$close()
库(tensorflow)

一般来说,
sapply(df,fun)
for(i In seq_len(ncol(df)){fun(df[,i])}
是一样的。你能添加一个可重复的例子吗?我仍然不能100%确定这个“过滤”操作在做什么。如果你用一个更关注实际问题的标题替换这个非常通用的标题,你可能会得到更好的答案“我怎么做这个操作?”。这种操作有名字吗?看起来你会模糊位图图像,但我想不出你会怎么称呼它。我打赌如果你问这个问题,你会得到更好的答案。一般来说,
sapply(df,fun)
for(I in seq_len(ncol(df)){fun(df[,I])是一样的
。你能添加一个可重复的例子吗?我仍然不能100%确定这个“过滤”操作在做什么。如果你用一个更加关注“我如何做这个操作”这一实际问题的标题替换这个非常通用的标题,你可能会得到更好的答案?".这种操作有名字吗?看起来你会模糊位图图像,但我想不出你会怎么称呼它。我打赌如果你问这个问题,你会得到更好的答案。我想他们想做的是取每个3x3的平均值region@divibisan也许吧,但这不是他们在帖子中写的。这只需要更改一个p参数tho;)我认为他们想要做的是取每个3x3的平均值region@divibisan也许吧,但这不是他们在帖子中写的。这只需要更改参数tho;)