2
給定一個索引數組,並且我想要一個矩陣B
以及A
的列的相應置換。在MXNet NDArray的列上使用索引陣列
在numpy的,我會做以下,
>>> A = np.arange(6).reshape(2,3); A
array([[0, 1, 2],
[3, 4, 5]])
>>> index = [2,0,1]
>>> A[:,index]
array([[2, 0, 1],
[5, 3, 4]])
是否有自然或高效方式MXNet做到這一點?功能pick()
和take()
似乎不能以這種方式工作。我設法想出以下內容,但它不夠高雅。
>>> mx.nd.take(A.T, mx.nd.array([[2],[0],[1]])).T.reshape((2,3))
[[ 2. 0. 1.]
[ 5. 3. 4.]]
<NDArray 2x3 @cpu(0)>
最後,爲了向工程投入扳手,有沒有辦法做到這一點?
更新這裏有一個稍微更優雅,但可能效率不高(由於轉),版本以上:
>>> mx.nd.take(A.T, mx.nd.array([2,0,1])).T
[[ 2. 0. 1.]
[ 5. 3. 4.]]
<NDArray 2x3 @cpu(0)>
我的猜測是,一旦採取'()''支持軸= 1',或任何其他軸爲這一問題,那麼這將有一個所謂的「雅緻」解決方案。 –