Python: Как узнать, существует ли неизвестный элемент в списке? - PullRequest
0 голосов
/ 06 декабря 2018

zero_crossings2 в основном обнаруживает изменения знака.Если есть zero_crossings2, я хочу добавить 1 к Cross_List, в противном случае я хочу добавить 0 к Cross_LIST.Код np.where(np.diff(np.sign(a2)))[0] может определять индекс изменения знака.Поэтому, если он возвращает результат, я хочу вернуть «1» в этой конкретной позиции и «0» везде, где он не обнаруживает смену знака.

Вот текущее состояние моего кода:

import numpy as np
crossing_list = []
a2 = [1, 2, 1, 1, 0, -3, -4, 7, 8, 9, 10, -2, 1, -3, 5, 6, 7, -10]
zero_crossings2 = np.where(np.diff(np.sign(a2)))[0]


for i in range(len(a2)):
    if X in zero_crossings2[i]:
        crossing_list.append('1')
    else:
        crossing_list.append('0')

crossing_list_new = np.array(crossing_list)

У меня проблемы с оператором if, «X» неизвестен, поэтому я не знаю, какой элемент находится в списке.

Мой ожидаемый результат:

[0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1]

1 Ответ

0 голосов
/ 06 декабря 2018

Чтобы получить нужный массив, вы можете сделать:

a2 = [1, 2, 1, 1, 0, -3, -4, 7, 8, 9, 10, -2, 1, -3, 5, 6, 7, -10]
signs = np.sign(a2)
crossings = np.where(np.diff(signs), 1, 0)

Отсутствует первый ноль (поскольку первое число crossings соответствует пересечению первого и второго числа a2), так что вы можете добавить это с помощью:

crossings = np.insert(crossings, 0, 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...