2016-11-26 2 views
1

私は機械学習のためにGraphlabを使用する方法を学んでいます。だから、私は4つの列でこのデータセットを持っています - 列 '名前'と別の 'レビュー'があります。Python.ValueError:複数の要素を持つ配列の真理値はあいまいです。 a.any()またはa.all()を使用する

ここでは、特定の製品のレビューを製品名で入手したいと考えています。だから、これは私が試みたものですが、私はエラーを残しています - ValueError:複数の要素を持つ配列の真理値はあいまいです。 a.any()またはa.all()を使用します。

if (products['name'] == "Vulli Sophie the Giraffe Teether"): 
    print (products['review']) 

--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-15-8607777f5c3b> in <module>() 
----> 1 if (products['name'] == "Vulli Sophie the Giraffe Teether"): 
     2  print products['review'] 

C:\Users\user\Anaconda2\envs\gl-env\lib\site-packages\graphlab\data_structures\sarray.pyc in __nonzero__(self) 
    752   """ 
    753   # message copied from Numpy 
--> 754   raise ValueError("The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()") 
    755 
    756  def __bool__(self): 

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

編集 -

if (products['name'] == "Vulli Sophie the Giraffe Teether"): 
     print products['name'] 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-16-1be157eebb1a> in <module>() 
----> 1 if (products['name'] == "Vulli Sophie the Giraffe Teether"): 
     2  print products['name'] 

C:\Users\user\Anaconda2\envs\gl-env\lib\site-packages\graphlab\data_structures\sarray.pyc in __nonzero__(self) 
    752   """ 
    753   # message copied from Numpy 
--> 754   raise ValueError("The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()") 
    755 
    756  def __bool__(self): 

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

試みのようにそれを使用することができFalseではありません –

+0

@MohamedALANI: - ありがとう。まだ同じエラーが発生しています。 –

+0

'products ['name']'を表示してください。 –

答えて

0

エラーメッセージは、したがって、あなたが簡単なコンパレータを使用することはできません、あなたはproducts['name']がリストであることを知らせるれます。

あなたがproducts['name']のいずれかの値があなたの タイトルと同じであることを確認したい場合は、あなたがあることを条件を変更する必要があります。

if "Vulli Sophie the Giraffe Teether" in products['name']: 
    # other stuff 

は、この情報がお役に立てば幸いです。

0

の私が知っているすべてのGraphlabは配列を提供するために、numpyモジュールを使用するだということです...言った私たちはのベクトルを持っている

In [21]: import numpy as np 

In [22]: prods = np.array((['a', 'b', 'c'], [1, 2, 3])) 

In [23]: prods 
Out[23]: 
array([['a', 'b', 'c'], 
     ['1', '2', '3']], 
     dtype='<U1') 

あなたに似たいくつかのデータで始めることができます名前( 'a'、 'b'、 'c')とレビュースコア(123)が含まれます。

次に、あなたが見ることができるように、この

In [24]: prods[0] == 'b' 
Out[24]: array([False, True, False], dtype=bool) 

ようベクトル化されたブール式を使用する特定の名前の位置を見つけるために、結果がブール値のベクトルです。

numpyの美しさは、あなたが何を私が書いたことはprodsに、最初のインデックス1(レビュースコア)などと第2の指標としての選択である空想のモードでのベクトル

In [26]: prods[1, prods[0] == 'b'] 
Out[26]: 
array(['2'], 
     dtype='<U1') 

に取り組むことができるということですブール値のベクトルをスキャンし、True個のアイテムのみを使用してください。

一致しないとどうなりますか? (製品[ '名前'] == "Vulliソフィーキリンおしゃぶり")の場合:何も

In [27]: prods[1, prods[0] == 'd'] 
Out[27]: 
array([], 
     dtype='<U1') 

は、この特定の値は、あなたがこの(未テスト)

for my_name in names: 
    my_review = products['review', products['name'] == my_name] 
    if my_rev: 
     do_stuff(my_review) 
関連する問題