фильтровать массив по другому массиву в julia

#arrays #julia

#массивы #julia

Вопрос:

У меня есть два массива в Julia, массив 1 (45807×2) имеет два столбца, первый столбец предназначен для позиции snp, а второй столбец — для snpID, теперь я хочу получить SNPID, который имеет позицию в массиве2 (4580×1) из массива 1. например, первый элемент (5) в массиве1 — пятый snpID (BTA-34880) в массиве 1. как я могу это сделать? Спасибо.

 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
 

Ответ №1:

Вы можете напрямую использовать второй массив в качестве индекса для первого массива. Посмотрите на этот пример:

 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

 

Комментарии:

1. это решило мою проблему, спасибо за помощь 🙂