を使用して Matlab からこのデータ ファイルをインポートした後scipy.io.loadmat
、行列の 1 つの条件付け数を計算しようとするまで、問題なく動作しているように見えました。
再現するコードの最小量は次のとおりです。
import scipy
import numpy
stuff = scipy.io.loadmat("dati-esercizio1.mat")
numpy.linalg.cond(stuff["A"])
iPython の厚意により拡張されたスタック トレースを次に示します。
In [3]: numpy.linalg.cond(A)
---------------------------------------------------------------------------
LapackError Traceback (most recent call last)
/snip/<ipython-input-3-15d9ef00a605> in <module>()
----> 1 numpy.linalg.cond(A)
/snip/python2.7/site-packages/numpy/linalg/linalg.py in cond(x, p)
1409 x = asarray(x) # in case we have a matrix
1410 if p is None:
-> 1411 s = svd(x,compute_uv=False)
1412 return s[0]/s[-1]
1413 else:
/snip/python2.7/site-packages/numpy/linalg/linalg.py in svd(a, full_matrices, compute_uv)
1313 work = zeros((lwork,), t)
1314 results = lapack_routine(option, m, n, a, m, s, u, m, vt, nvt,
-> 1315 work, -1, iwork, 0)
1316 lwork = int(work[0])
1317 work = zeros((lwork,), t)
LapackError: Parameter a has non-native byte order in lapack_lite.dgesdd
すべての明らかなアイデア (マトリックスを平坦化して再形成する、マトリックスをゼロから再作成して要素ごとに再割り当てするなど) は失敗しました。それでは、numpy でより快適にするために、データをマッサージするにはどうすればよいでしょうか?