2016-12-03 11 views
0

は私が5次元マトリックスvがあると仮定し、今私は新しい行列D私はエレガントnumpyの中でこれを行うにはどうすればよいnumpyで次の行列をうまく構築するには?

D[a, b, n, m, d] = v[a, b, n, n, d]-v[a, b, m, m, d]. 

を果たしたいですか?

+1

?ある種の縮小/対角加算? – Divakar

+0

元の投稿にマッピングルールを示しました。すべてのあいまいさ? –

+1

申し訳ありませんが、私はそれを表示されません。私は目の診察が必要ではないことを願っています! – Divakar

答えて

0

のようにそれを再構築することができます

`D '(4D)に` v`(5D)から行くにマッピングする基準は何
D = np.einsum('abiic->abic', v)[..., None, :] - np.einsum('abiic->abic', v)[:, :, None, ...] 
+0

「v」は「5D」ではありませんでしたか?この「aiib」の表記法では、代わりに「v」を「4D」としているようです。 – Divakar

+0

ありがとうございます。それに応じて編集。 –

0

どのようにディメンションを変更しますか?あなたは、私がこれを行うことができますeinsumたこの

import numpy as np 

a, b, n, d = 2, 3, 4, 5 
v = np.zeros((a, b, n, n, d)) 
D = v.reshape((a, b, n*n, d)) 
+0

正しい結果が得られていないようです。 –

関連する問題