2012-02-23 6 views
0

ioapiフォーマットファイルを管理するためのpythonモジュールであるioapiToolsをインストールしました。モジュールはファイルを処理し、基本的な算術演算を含むそれらの演算を実行することになっています。しかし、何かが間違っていて、配列に浮動小数点数または整数を掛けようとすると、結果はゼロ値の配列になります(配列と浮動小数点の両方が0とは異なります)。問題の モジュールは、次の構文に従ってcdms2使用して一時変数を作成します。Python ioapiToolsモジュールは基本的な演算を行うことができません

import cdms2 as cdms, cdtime, MV2 as MV, cdutil 
import numpy as N 

..........

def __mul__(self, other): 
    """ 
    Wrapper around cdms tvariable multiply 
    """ 

    tmpVar = cdms.tvariable.TransientVariable.__mul__(self,other) 

    iotmpVar = createVariable(tmpVar, self.ioM, id = self.id,\ 
           attributes=self.attributes, copyFlag = False) 


    return iotmpVar 

をしかし、変数はゼロが、何も返しません。 アイデア

+0

小文字の問題:ここで '\ 'を使う必要はありません - 括弧(または中かっこ)内の改行は基本的に無視されます。 –

答えて

0

私はioapiToolsを使用しようとしましたが、私が見つけた最新のバージョンは0.335.でした。 残念ながら、コードはcdatの進化に追いついていないようです。これは現在、Numericの代わりにnumpyを使用することを推奨しています。自動翻訳ツールはいくつかの問題を解決しているかもしれませんが、すべてではありません。たとえば、クラスiovar(ioapiTools.py:2103で定義)は、numpyでマスクされた配列のサブクラスであるため、_____new_____メソッドを持つ必要があります。それで、私は_____mul_____が働いているようです。私は_____new_____メソッドを定義せずにiovarのインスタンスを取得することさえできなかったので、問題を再現できませんでした。

あなたがまだ必要なものを手に入れることができますが、もっと問題が隠れていると確信しています。

関連する問題