私はPythonを使ってStrassenの行列乗算を実装しています。分割ステップでは、より大きな行列をより小さな部分行列に分割する。行列を分割する組み込みnumpy関数はありますか?numpyを使用して行列を4つのブロックに分割する方法は?
6
A
答えて
11
正確にはそうではありませんが、配列スライス表記法を使用すると、自分で簡単に行うことができます。
>>> A = np.linspace(0,24,25).reshape([5,5,])
>>> 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.]])
メイクBは中左上の2x2:あなたはデータをコピーする必要がある場合はBがビューであることを
>>> B = A[0:2,0:2]
注意、それは
>>> B[1,1] = 60
>>> print A
[[ 0. 1. 2. 3. 4.]
[ 5. 60. 7. 8. 9.]
[ 10. 11. 12. 13. 14.]
[ 15. 16. 17. 18. 19.]
[ 20. 21. 22. 23. 24.]]
でデータを共有しますAからコピー方法を使用してください:
>>> B = A[0:2,0:2].copy()
>>> B
array([[ 0., 1.],
[ 5., 60.]])
>>> B[1,1] = 600
>>> B
array([[ 0., 1.],
[ 5., 600.]])
>>> A
array([[ 0., 1., 2., 3., 4.],
[ 5., 60., 7., 8., 9.],
[ 10., 11., 12., 13., 14.],
[ 15., 16., 17., 18., 19.],
[ 20., 21., 22., 23., 24.]])
2
私は同じ問題が見つかったいくつかの組み込みのnumpyの機能4つの部分行列に私の行列を分割するために(私の行列がサイズで2^N * 2^N)ここで
は、私が書いたコードです:upper_half = np.hsplit(np.vsplit(my_matrix, 2)[0], 2)
lower_half = np.hsplit(np.vsplit(my_matrix, 2)[1], 2)
upper_left = upper_half[0]
upper_right = upper_half[1]
lower_left = lower_half[0]
lower_right = lower_half[1]
numpyのを使用してそれらを再結合するためのボーナス:
C=np.vstack([np.hstack([c11, c12]), np.hstack([c21, c22])])
vsplit hsplit hstackとその目的
のために作られているように見えるvstack関連する問題
- 1. 行列を小行列のブロックに分割する方法
- 2. 文字列を4文字のブロックに分割する
- 3. C - 行列を4で分割する方法
- 4. 行列を等しい部分に分割する方法は?
- 5. numpyの条件に従って配列を分割する方法は?
- 6. Numpy:行列をn個の異なる行列にランダムに分割/選択する方法
- 7. Numpy 2D配列を再分割する
- 8. 文字列を3つのブロックに分割しますか?
- 9. Python 3.2:行のグループを使用して複数行の文字列をセクションに分割する方法
- 10. Javaを使用してExcelファイルを分割する方法は?
- 11. XSLTを使用してXMLファイルを分割する方法は?
- 12. " - "キーワードを使用して文字列を分割する方法は? 「 - 」
- 13. python numpyを不等な部分配列に分割する
- 14. 4列分割レイアウト
- 15. イメージをMATLABでブロックに分割する方法は?
- 16. は1つの列で行列を分割します
- 17. 3つの列でOracleのvarchar列を分割する方法
- 18. numpyを使用して2つの同じサイズの行列をコンボリューションする
- 19. numpy軸に沿って分割する
- 20. PHPを使用してテキストを2つの列に分割する
- 21. 列を分割する方法は?
- 22. JavaでRegexを使用してマップ文字列を分割する方法
- 23. Androidで線形レイアウトを使用して3列を分割する方法
- 24. Numpy stride_tricksを使用してオーバーラップしない配列ブロックを取得する
- 25. 関数を使用してループを分割する方法
- 26. nltk.parse.stanfordライブラリを使用して文を分割する方法
- 27. regexを使用してセットクッキーヘッダーを分割する方法
- 28. イメージをオーバーラップするブロックに分割する方法
- 29. numpy行列で最小値を見つける方法は?
- 30. Pythonでnumpyで2つの行列を結合する方法