0
私の質問は3次元を除いて、 Indexing tensor with index matrix in theano? と非常によく似ています。最初はそれをnumpyで動作させたい。 2次元の場合、問題はありません。高度な3d indexind in theano
>>> idx = np.random.randint(3, size=(4, 2, 3))
>>> d = np.random.rand(4*2*3).reshape((4, 2, 3))
>>> d[1]
array([[ 0.37057415, 0.73066383, 0.76399376],
[ 0.12155831, 0.12552545, 0.87648523]])
>>> idx[1]
array([[2, 0, 1],
[2, 2, 2]])
>>> d[1][np.arange(d.shape[1])[:, np.newaxis], idx[1]]
array([[ 0.76399376, 0.37057415, 0.73066383],
[ 0.87648523, 0.87648523, 0.87648523]]) #All correct
しかし、3次元すべてでどのように動作させるかわかりません。試行失敗の例:
>>> d[np.arange(d.shape[0])[:, np.newaxis], np.arange(d.shape[1]), idx]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: shape mismatch: indexing arrays could not be broadcast together with shapes (4,1) (2,) (4,2,3)
を持っている必要があります
はそれは正しいです、ありがとうございます。どのように動作するのか理解しようと約束します) –