2016-11-26 1 views
1

Я изучаю, как использовать Graphlab для машинного обучения. Итак, у меня есть этот набор данных с четырьмя столбцами - есть столбец «имя» и другой «обзор».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() 

Edit -

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

попробовать: если (продукты [ 'имя'] == "Vulli Софи Жираф Teether"): –

+0

@MohamedALANI: - Спасибо. По-прежнему получается такая же ошибка. –

+0

print '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') и обзорные оценки (1, 2, 3).

Далее, чтобы найти позиции конкретного имени, которое вы используете векторизованного логического выражения как этого

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

как вы можете видеть, результат является вектором логических значений.

красота numpy является то, что вы можете обратиться векторы в причудливых режимах

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

То, что я написал это, в prods выберите в качестве первого индекса 1 (баллы обзор) и в качестве второго индекса сканировать вектор булевых и использовать только элементы True.

Что произойдет, если у вас нет соответствия? ничего

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

Это особое значение не False, так что вы можете использовать его, как этот (непроверенных)

for my_name in names: 
    my_review = products['review', products['name'] == my_name] 
    if my_rev: 
     do_stuff(my_review) 
Смежные вопросы

 Смежные вопросы