2015-11-09 5 views
1

Почему я не могу найти расположение кортежа в массиве? Afterall, дно выражение печатает Truenumpy где с массивом кортежей

foo = numpy.array([(5, 30), (5,), 5]) 
bar = numpy.where(foo==foo[0]) 
print(bar) 

Печать (array([], dtype=int64),)

print((5,30)==foo[0]) 

Печатает True

+0

'foo' - массив' dtype = object' (разные кортежи). Многие из обычных операций с числовым массивом, включая сравнение, не применяются для этого типа dtype. 'foo' должен быть списком. – hpaulj

ответ

2

Это потому, что:

import numpy 

foo = numpy.array([(5, 30), (5,), 5]) 
bar = numpy.where(foo==foo[0]) 
print(foo==foo[0]) 

False 

Вот почему вы получаете пустой массив. Альтернативой для составления списка является [v for v in foo if v == foo[0]]. Результатом будет [(5, 30)]

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