わかりました、たとえば、行列を転置する方法を知っています:
A = np.arange(25).reshape(5, 5)
print A
array([[ 0, 1, 2, 3, 4],
[ 5, 6, 7, 8, 9],
[10, 11, 12, 13, 14],
[15, 16, 17, 18, 19],
[20, 21, 22, 23, 24]])
A.T
array([[ 0, 5, 10, 15, 20],
[ 1, 6, 11, 16, 21],
[ 2, 7, 12, 17, 22],
[ 3, 8, 13, 18, 23],
[ 4, 9, 14, 19, 24]])
1 次元配列の場合、この ".T" ツールを使用することはできません (理由は正直わかりません) ため、ベクトルを転置するには、パラダイムを変更して使用する必要があります。たとえば、次のようにします。
B = np.arange(5)
print B
array([0, 1, 2, 3, 4])
そしてB.T
、同じ結果が得られるため、このパラダイムの変更を適用して、次を使用します。
B[ :, np.newaxis]
array([[0],
[1],
[2],
[3],
[4]])
このパラダイムの変化は、数学的に言えば同じファミリーに属し、多くの要素を共有しているという意味で、1 次元ベクトルは 2 次元ベクトル (行列) とまったく異なるエンティティではないため、少し反感を覚えます。もの。
私の質問は、あらゆる種類のテンソルに対して、よりコンパクトで統一された方法で、einsum である numpy の王冠の (時々呼ばれる) 宝石でこの転置を行うことは可能ですか? 私はあなたがするマトリックスのためにそれを知っています
np.einsum('ij->ji', A)
以前と同様に、次のようになりますA.T
。
array([[ 0, 5, 10, 15, 20],
[ 1, 6, 11, 16, 21],
[ 2, 7, 12, 17, 22],
[ 3, 8, 13, 18, 23],
[ 4, 9, 14, 19, 24]])
1次元配列でそれを行うことは可能ですか?
前もって感謝します。