gpt4 book ai didi

arrays - R 将 3D 数组的第二维乘以每个第三维的向量

转载 作者:行者123 更新时间:2023-12-04 09:24:35 25 4
gpt4 key购买 nike

当尝试将数组的第一个维度乘以向量的每个索引乘以第二个维度时,我的数组被转换为矩阵并且事情变得很奇怪。我只能长期做适当的乘法。

嘴巴怎么满...

用代码解释更容易...

Arr <- array(runif(10*5*3), dim = c(10,5,3))
dim(Arr)
Vect <- c(1:5)

Arr[,1,1] <- Arr[,1,1]*Vect[1]
Arr[,1,2] <- Arr[,1,2]*Vect[1]
Arr[,1,3] <- Arr[,1,3]*Vect[1]

Arr[,2,1] <- Arr[,2,1]*Vect[2]
Arr[,2,2] <- Arr[,2,2]*Vect[2]
Arr[,2,3] <- Arr[,2,3]*Vect[2]

Arr[,3,1] <- Arr[,3,1]*Vect[3]
Arr[,3,2] <- Arr[,3,2]*Vect[3]
Arr[,3,3] <- Arr[,3,3]*Vect[3]

Arr[,4,1] <- Arr[,4,1]*Vect[4]
Arr[,4,2] <- Arr[,4,2]*Vect[4]
Arr[,4,3] <- Arr[,4,3]*Vect[4]

Arr[,5,1] <- Arr[,5,1]*Vect[5]
Arr[,5,2] <- Arr[,5,2]*Vect[5]
Arr[,5,3] <- Arr[,5,3]*Vect[5]

如何将其清理为一个命令?

最佳答案

首先将 Vect 转换为数组,然后元素相乘:

varr <- aperm(array(Vect, dim = c(5L, 10L, 3L)), perm = c(2L, 1L, 3L))

Arr <- varr * Arr

(当然,如果您想在一个命令中存储 varr,我们不需要存储)

(而且,事实证明这基本上就是 sweep 在幕后所做的......)

关于arrays - R 将 3D 数组的第二维乘以每个第三维的向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34520567/

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