首页 > 解决方案 > 用 Julia 中的另一个数组过滤一个数组

问题描述

我在Julia中有两个数组,数组1(45807x2)有两列,第一列是snp的位置,第二列是snpID,现在我想要数组1中array2(4580x1)中位置的snpID。对于例如,数组 1 中的第一个元素 (5) 是数组 1 中的第五个 snpID (BTA-34880)。我该怎么做?谢谢。

45807×2 Array{Any,2}:
 1  "BovineHD0100000015"
 2  "Hapmap43437-BTA-101873"
 3  "BovineHD0100000062"
 4  "ARS-BFGL-NGS-16466"
 5  "BTA-34880"
 6  "BovineHD0100000096"
 7  "Hapmap34944-BES1_Contig627_1906"
 8  "ARS-BFGL-NGS-98142"
 9  "rs29015850"
10  "ARS-BFGL-NGS-114208"
11  "ARS-BFGL-NGS-66449"
12  "BovineHD0100000204"
13  "BovineHD0100000220"
 ⋮  


4580-element Array{Int64,1}:
 5
 6
18
25
26
54
55
67
69
84
88

标签: arraysjulia

解决方案


您可以直接使用第二个数组作为第一个数组的索引。看这个例子:

julia> using Random

julia> a = hcat(1:10, shuffle(1:10))
10×2 Array{Int64,2}:
  1   7
  2   6
  3  10
  4   1
  5   9
  6   8
  7   4
  8   5
  9   3
 10   2

julia> b = shuffle(1:5)
5-element Array{Int64,1}:
 2
 5
 3
 4
 1

julia> a[b,2]
5-element Array{Int64,1}:
  6
  9
 10
  1
  7


推荐阅读