2016-07-29 8 views
-3

私は、変数がある値よりも大きく、別の値よりも小さい場合、2つの条件が満たされた場合にのみ実行するように関数を設定しようとしています。if条件に2つの条件を入れるにはどうすればいいですか?

これには、start_timeとend_timeを定義する2つの関数と、ファイルを処理するループがあります。 ifの文でわかるように、私は数値の範囲内でファイルのデータを読み込もうとしています。両方の数値を与えられている:私は2つの変数(START_DATE、END_DATEを使用しています特にため、

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all() 

私はこの問題を解決する方法を理解していない:私がしたように私はそれを設定すると、しかし、私はこのエラーを取得します前の関数で)。

要するに、希望の「if」文をどのようにすることができますか?

編集:また、私は無視される基準を満たしていないファイルをしたい、と私は、私は「他」の文を書いていない場合、彼らがなるかどうかわからないです。

+2

エラーメッセージの内容を確認してください。 – Marcin

+1

あなたのコードは本当に読みにくいです。空白にアレルギーがありますか?意味のある変数名?説明的なコメント? –

+0

私の場合に合った使い方についての説明はないようです。しかし、助けてくれてありがとう、私は本当にありがとう@Marcin – xyzman

答えて

1

エラーは、配列(a.k.a. juld)と数値を比較しているためです。要するに、if文を調べるための特定の要素を指定するか、エラーメッセージの詳細に従ってany()またはall()メソッドを使用する必要があります。これらのメソッドの定義はhereです。

0

あなたがここで何をしたいのか分かりませんが、3つのオプションがあります。配列内のすべての値が条件を満たしている場合にのみブロックに入る場合は、a.all(条件)を使用します。値が条件を満たす場合は、a.any(条件)を使用します。あなたが値を満足し、配列の値ごとにブロックに行きたい場合は、あなたがjuld 2に、日付/番号、start_dateend_dateすなわち、配列を比較しているため、問題がある

for x in array: 
    if(condition): 
     do stuff 
    else: 
     do other stuff 
0

を行うだろう。したがって、配列を日付/数値に変更できる必要があります。私は何がjuldである見ることはできませんが、私はあなただけにあなたのコードを変更する場合は疑う:

if start_date<juld[0]<end_date: 

それは、次の作品(1を返す)、すなわち、動作します:

import datetime 
d1 = datetime.date(1996, 4, 1) 
d2 = datetime.date(2017, 7, 29) 
dt = datetime.date(2016, 7, 29) 
x = Read_Data(dt, d1 , d2) 

def Read_Data(date, start_date, end_date): 
    if start_date<date<end_date: 
     return 1 
+0

だから、juld [0]と書くと、スレッシュホールドを0に設定していますか? Julian Datesを使っているので、私の価値観は2万であるので、それについて少し詳しく説明できますか?ありがとう – xyzman

+0

この 'np.array(ncfile.variables ['JULD'] [:])'をチェックして元に戻しましょう。 – cpemberton

+0

この呼び出しでは1つの日付しか期待できませんか? 'np.array(ncfile.variables ['JULD'] [:])' もしそうなら、 のように 'print(juld)' Ifあなたが探している日付はその配列の0番目の要素です。そして、私が上に書いた解決策は正しいです。しかし、複数の日付が予想され、これらの日付で操作を実行する場合は、 'for each d in juld'のように配列を反復処理することをお勧めします。 私はこれが助けてくれることを願っています!申し訳ありませんが、これで苦労しています! – cpemberton

1

まず第一に、私はそれが配列であるとして、あなたは、juldの最小/最大値を見てみたいと思います。

if max(juld) < start_date or min(juld) > end_date: 

私はそれがうまくいくと思います!

+0

ありがとう、最終的に私がdownvotes笑を与える人々なしで合理的な答え – xyzman

関連する問題