2016-05-07 8 views
-3

こんにちは私はいくつかのMatlabコードをPythonに変換しようとしています。ここでMatlabコード私はPythonに変換するように見えない

は、MATLABコードです:

[n,i] = sort(n); 

nはすでにデータを持つ配列として定義されているが、私は、私の知る限り見ることができるように全体のコードで何として定義されていません。私は、n個のデータがあることを知っているので、どのように私は私に対処しない

[n,i] = n.sort(axis = 0) 

しかし、それは「『NoneType』オブジェクトが反復可能ではない」と述べた

:これは私が実行しようとしました何ですか?

私はMathWorks社のMATLABコードでダウン下:この平均値を何

y = y(i) 

、そしてどのように私は、Pythonにこれを変換するのですか?

+0

「私は何であるべきですか?配列をソートしようとしていますか? – mwm314

+0

'n'は配列としてどのように定義されていますか? – excaza

+0

私はnの配列の各値に対応する数値であると考えられます。したがって、n = [2,4,5,18]の場合、私はちょうど[1,2,3,4] –

答えて

0

これはまっすぐなpythonかnumpyですか?

まっすぐなpythonでは、sortメソッドはNoneを返します。 あなたは、ソートされたビルトイン呼び出すことができ、次のいずれかのインプレース

n = sorted(n) 

またはデータをソートするsortメソッドを使用し

n.sort() 

後者は、より効率的です。このデータはnumpyのオブジェクトである場合

することは、あなたはhttp://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.sort.html

を参照してください、numpyのメソッドを使用したいと思う申し訳ありませんが、私は最後のMATLAB表現が何を意味するのか分かりません。

0

したがって、sortのMatlabのドキュメントを参照すると、iは元の要素のインデックスを表しているようです。あなたはこのように、argsortを使用してnumpyでこれを行うことができます。

import numpy as np 
n = np.array([3, 7, 1, 10, 9, 5, 7]) 
[n, i] = [np.sort(n), np.argsort(n)] 

この意志出力:niため

[ 1 3 5 7 7 9 10] 
[2 0 5 1 6 4 3] 

はそれぞれ。

nが大きい(これは実際にはここで2回ソートしています)が、これはかなり読みにくいですが、これはかなり非効率的です。実際のスピードが重要な場合は、ここに記載されている方法を使用することをお勧めします:How to get indices of a sorted array in Python

関連する問題