2014-06-21 4 views
0

У меня есть массив b, содержащий индексы массива a. Я хочу вставить значения другого массива c в массив b с одинаковыми индексами.Как заменить массив, содержащий индексы со значениями из другого массива?

import numpy as np 
a1=np.array([[1, 3, 5, 2, 3],[7, 6, 5, 2, 4],[2, 0, 5, 6, 4]]) 
a=a1.argsort()[:,:2] 

## это создаст массив с индексами 2 наименьших значений a1

a 
[[0 3] 
[3 4] 
[1 0]] 
b=np.array([[1],[2],[3],[4],[5],[6]]) 

теперь я хочу, чтобы заменить значение 0 в 1 с в Ь; 3 с 4 и так далее

я попытался с помощью:

[a[index]]=b[index] 

но его явно не правильный путь, как массиву обрабатывает эти показатели, как значения

пожалуйста, помогите

+0

Не могли бы вы прояснить немного больше? Вы указываете массив 'c', но не показываете его в своем примере. Не могли бы вы показать, что вы хотите, чтобы результат операции был в вашем примере? – daveydave400

ответ

1

Если я вас понял правильно, вы можете просто использовать сплющенную версию a для индексации на b:

result = b.ravel()[a.ravel()] 

[1, 4, 4, 5, 2, 1] 

Если вам это нужно в тех же размерах, как a вы можете изменить его форму:

result = result.reshape(a.shape) 

[[1, 4] 
[4, 5] 
[2, 1]] 
+0

awesome ... Большое вам спасибо – Learner27

Смежные вопросы