如何在Julia中从一个大矩阵中随机取一个矩阵子集



我有一个大矩阵(28960×45807 Array{Float64,2}),其中行表示个体,列表示snpID。现在我想得到一个子集矩阵(28960x4580), snps是从大矩阵中随机选择的。我怎么用Julia做呢?

假设你的矩阵是x:

using StatsBase
@view x[:, sample(1:size(x,2), 4580, replace=false, ordered=true)]

Exaplanation:

  • 使用@view可以避免数据复制。可以在此命令中跳过它,但这会使性能恶化
  • 冒号:选择所有行的数据,数组切片的第二个参数用于选择一堆列
  • size(x,2)返回列数
  • 我们使用StatsBase中的sample对列号进行采样而不进行替换。此外,我假设您不想更改列
  • 的顺序。

最新更新