2017-10-06 11 views
1

Python 3を使用していて、配列2の要素のsqrtがaであるかどうかを確認しようとしています。ブール値の応答を返します。NumPyの 'any'の問題

私はエラーが発生します:

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

マイコード:

import numpy as np 

def mems(a, b): 
    a = np.array(a) 
    b = np.array(b) 
    return np.any(np.sqrt(b) in a) 

答えて

1

を私が推測するには、一部が間違って返します。これを試してみてください:

import numpy as np 

def mems(a, b): 
    a = np.array(a) 
    b = np.array(b) 
    b_sqrt = np.sqrt(b) 
    return any(sqrt in a for sqrt in b_sqrt) 

print(mems([1, 2, 3, 4, 5], [20, 56])) 
print(mems([1, 2, 3, 4, 5], [16, 25, 17, 18])) 

出力:

False 
True 
+0

入力パラメータを別の型にキャストし、変数を再利用するのはかなり一般的です。そうすることに間違いはありません。 – James

+0

私は、あなたがリストのcompを 'any'で必要と思っていません - それはただ不必要にメモリを消費します。 – erip

+0

@Jamesあなたが正しいです、私はそれを編集しました。 – Alperen

0

あなたはこの

import numpy as np 

def mems(a, b): 
    return np.any(np.in1d(a, np.sqrt(b))) 

ためにnumpyの機能in1dを使用することができます。しかし、あなたがnonintegersでこれを行う場合、あなたは間違った結果が得られます。

関連する問題