Выберите элементы в numpy [duplicate]

Ошибка будет возникать и в следующих двух сценариях.

  1. Элемент сценария @section отсутствует в файле HTML
  2. Ошибка при доступе к элементам DOM. Например, доступ к элементу DOM упоминается как $ ("js-toggle") вместо $ (". Js-toggle"). Фактически, этот период отсутствует

Итак, 3 вещи, которые необходимо соблюдать, - добавляются необходимые скрипты, проверяются, добавлены ли они в требуемый порядок и третьи синтаксические ошибки в вашем Java Script.

90
задан Hooked 29 February 2012 в 00:14
поделиться

5 ответов

Ваше выражение работает, если вы добавляете круглые скобки:

>>> y[(1 < x) & (x < 5)]
array(['o', 'o', 'a'], 
      dtype='|S1')
150
ответ дан jfs 1 September 2018 в 04:06
поделиться

На самом деле я бы сделал это следующим образом:

L1 - это индексный список элементов, удовлетворяющих условию 1; (возможно, вы можете использовать somelist.index(condition1) или np.where(condition1) для получения L1.)

Точно так же вы получаете L2, список элементов, удовлетворяющих условию 2;

. Затем вы найдете пересечение с помощью intersect(L1,L2).

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

Затем вы можете применить индекс в любом другом массиве, например, x.

1
ответ дан Andrew Elliott 1 September 2018 в 04:06
поделиться

Добавьте одну деталь к @ J.F. Ответы Себастьяна и @ Марка Микофски: Если вы хотите получить соответствующие индексы (а не фактические значения массива), следующий код будет делать:

Для удовлетворения нескольких (всех) условий:

select_indices = np.where( np.logical_and( x > 1, x < 5) ) #   1 < x <5

Для удовлетворения нескольких (или) условий:

select_indices = np.where( np.logical_or( x < 1, x > 5 ) ) # x <1 or x >5
15
ответ дан fredtantini 1 September 2018 в 04:06
поделиться

IMO OP фактически не хочет np.bitwise_and() (aka &) , но на самом деле хочет np.logical_and() , потому что они сравнивают логические значения, такие как True и False - см. это сообщение SO на логическом против побитового , чтобы увидеть разницу.

>>> x = array([5, 2, 3, 1, 4, 5])
>>> y = array(['f','o','o','b','a','r'])
>>> output = y[np.logical_and(x > 1, x < 5)] # desired output is ['o','o','a']
>>> output
array(['o', 'o', 'a'],
      dtype='|S1')

И эквивалентный способ сделать это с помощью np.all() , соответствующим образом установив аргумент axis.

>>> output = y[np.all([x > 1, x < 5], axis=0)] # desired output is ['o','o','a']
>>> output
array(['o', 'o', 'a'],
      dtype='|S1')

номерами:

>>> %timeit (a < b) & (b < c)
The slowest run took 32.97 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 1.15 µs per loop

>>> %timeit np.logical_and(a < b, b < c)
The slowest run took 32.59 times longer than the fastest. This could mean that an intermediate result is being cached.
1000000 loops, best of 3: 1.17 µs per loop

>>> %timeit np.all([a < b, b < c], 0)
The slowest run took 67.47 times longer than the fastest. This could mean that an intermediate result is being cached.
100000 loops, best of 3: 5.06 µs per loop

, поэтому использование np.all() выполняется медленнее, но & и logical_and примерно одинаковы.

28
ответ дан Mark Mikofski 1 September 2018 в 04:06
поделиться

Мне нравится использовать np.vectorize для таких задач. Рассмотрим следующее:

>>> # Arrays
>>> x = np.array([5, 2, 3, 1, 4, 5])
>>> y = np.array(['f','o','o','b','a','r'])

>>> # Function containing the constraints
>>> func = np.vectorize(lambda t: t>1 and t<5)

>>> # Call function on x
>>> y[func(x)]
>>> array(['o', 'o', 'a'], dtype='<U1')

Преимущество состоит в том, что вы можете добавить еще много типов ограничений в векторизованной функции.

Надеюсь, что это поможет.

4
ответ дан user 1 September 2018 в 04:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: