numpy.equal со строковыми значениями - PullRequest
0 голосов
/ 14 марта 2010

Функция numpy.equal не работает, если список или массив содержит строки:

>>> import numpy
>>> index = numpy.equal([1,2,'a'],None)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: function not supported for these types, and can't coerce safely to supported types

Какой самый простой способ обойти это без циклического прохождения каждого элемента? В конце мне нужно, чтобы index содержал логический массив, указывающий, какие элементы None.

Ответы [ 2 ]

2 голосов
/ 14 марта 2010

Если вам действительно нужно использовать numpy, будьте внимательны с тем, что вы передаете, и это может сработать:

>>> import numpy
>>> a = numpy.array([1, 2, 'a'], dtype=object) # makes type of array what you need
>>> numpy.equal(a, None)
array([False, False, False], dtype=bool)

Так как вы начинаете со списка, есть шанс, что вы действительно хотите, это просто понимание списка, такое как [item is None for item in [1, 2, 'a']] или подобное выражение генератора.

Иметь разнородный список, как этот, странно. Списки (и числовые массивы) обычно используются для однородных данных.

1 голос
/ 14 марта 2010

Что не так с пониманием списка акций?

index = [x is None for x in L]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...