2012-11-06 9 views
3

Я две перестановки, представленные в виде Numpy массивов:Numpy: умножить две перестановки

A:

 0 1 2 3 
A = [1, 3, 2, 0] 

и B:

 0 1 2 3 
B = [0, 2, 1, 3] 

Как можно получить C = A * B, где

0->1 * 1->2 = 2 
1->3 * 3->3 = 3 
2->2 * 2->1 = 1 
3->0 * 0->0 = 0 

C = (2, 3, 1, 0) 

с использованием Num ру?

ответ

4

Довольно просто, b[a] будет делать трюк:

>>> import numpy as np 
>>> a = np.array([1, 3, 2, 0]) 
>>> b = np.array([0, 2, 1, 3]) 
>>> c = b[a] 
>>> print c 
[2 3 1 0] 
Смежные вопросы