On Thu, Oct 13, 2016, Xiang Li wrote:
> Given a matrix A and a vector B, I want to transform the value in A to its 
> index in B.
> e.g. A=[[1,2],[2,5]], B=[1,2,3,4,5], so the desired result is A'=[[0,1], 
> [1,4]], since B[0]=1, B[1]=2, B[4]=5
> How to achieve  the function by a basic operation?

In numpy, you could do:
>>> B_ = np.zeros(B.max() + 1, int)
>>> B_[B] = np.arange(B.shape[0])
>>> B_[A]
array([[0, 1],
       [1, 4]])

In Theano, it is not that different:
>>> A = imatrix('A')
>>> B = ivector('B')
>>> B_ = tensor.zeros([B.max() + 1], 'int32')
>>> B_ = tensor.set_subtensor(B_[B], tensor.arange(B.shape[0]))
>>> A_ = B_[A]
>>> A_.eval({A: [[1,2],[2,5]], B: [1,2,3,4,5]})
array([[0, 1],
       [1, 4]], dtype=int32)

-- 
Pascal

-- 

--- 
You received this message because you are subscribed to the Google Groups 
"theano-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to theano-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to