numpy.linalg.svdでSVDを実行したい
下記のような正方行列だと問題なく実行できます。実行結果も問題ありません。
python
1import numpy as np 2A = numpy.array([ 3 [5, 3, 0, 1, 3], 4 [4, 0, 0, 1, 1], 5 [1, 1, 0, 5, 0], 6 [1, 0, 0, 4, 0], 7 [0, 1, 5, 4, 1] 8]) 9U, s, V = numpy.linalg.svd(A, full_matrices=True) 10print( np.dot(np.dot(U, np.diag(s)),V) )
しかし、下記のような非正方行列だとエラーが出てしまい、実行ができません。対処法、または別な実行方法があればお教え願います。
python
1import numpy as np 2A = numpy.array([ 3 [5, 3, 0, 1, 3], 4 [4, 0, 0, 1, 1], 5 [1, 1, 0, 5, 0], 6 [1, 0, 0, 4, 0] 7]) 8U, s, V = numpy.linalg.svd(A, full_matrices=True) 9print( np.dot(np.dot(U, np.diag(s)),V) )
Traceback (most recent call last): File svd2.py, line 27, in <module> print( np.dot(np.dot(U, np.diag(s)),V) ) ValueError: shapes (4,4) and (5,5) not aligned: 4 (dim 1) != 5 (dim 0)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/10/04 09:35