2016-07-15 2 views
-1

matlabファイルのシリアル日付番号データをPythonを使用してUTCに変換しようとしています。長さ1の配列しかPythonスカラーに変換できませんmatlabキーを使用する場合

from datetime import * 
import scipy.io as sio 
import toutc as toutc 
from numpy import * 
from plotting import * 
import matplotlib.pyplot as plt 
S = sio.loadmat(*MatLab_File.mat*) 
print (S.keys())     # Time is stored as the key 't' 
from datetime import datetime, timedelta 
SDN = S[str(input('time'))]   # Establishing we are using the key 't' 
X = (datetime.fromordinal(SDN) + timedelta(days=SDN%1) - timedelta(days = 366)) 

この最後の行は

Traceback (most recent call last): 
    File "matgraph.py", line 19, in <module> 
    X = (datetime.fromordinal(SDN) + timedelta(days=SDN%1) - timedelta(days = >366)) 
TypeError: only length-1 arrays can be converted to Python scalars 

これが機能しない理由任意のアイデアを返しますか?あなたがfromordinal[SDN]代わりのfromordinal(SDN)を持って

+0

する必要があります 'datetime.fromordinal'は方法ですが、' [SDN] 'でそれにサブスクリプションを使用しようとしています。ほとんどの場合、 'datetime.fromordinal(SDN)'を代わりに使用することになりました。 –

+0

@MartijnPietersあなたはここの上司ですが、質問:なぜこれは話題ですか?それは誤植ではないかもしれませんが、正直な "私は何をしているのか分かりません"。答えに値するはずがありませんか? –

+0

@AnderBiguri:トピック外の理由の説明を参照してください。これは*将来の訪問者には役に立たない*。 –

答えて

0

に一致するように最後の行および更新エラーに変更 '[]' から '()':

編集ありがとうございます。

+0

長さ1の配列だけがPythonスカラーに変換できる –

0

エラーは、関数が配列であるかのように関数にアクセスしようとしているために発生します。角括弧は配列[]の値にアクセスするためのもので、括弧はPythonの関数()のものです。

datetime.fromordinal[SDN]datetime.fromordinal(SDN)

+0

長さ1の配列だけがPythonスカラーに変換される –

+0

@LucasGorski:そのエラーにも多くのGoogleの結果があります。 numpy配列をサポートしていない配列にnumpy配列を渡しています。 –

+0

@ルーカスゴルスキー:だからあなたは 'SDN 'のタイプを見なければならないでしょう。それは配列かnumpy特有の型ですか?あなたはそれから抽出したり変換しなければなりません。 –

関連する問題