Python:如何确定列表中是否存在未知元素?

时间:2018-12-05 21:23:01

标签: python numpy

zero_crossings2基本上可以检测符号变化。 如果存在zero_crossings2,我想将1附加到crossing_list,否则,我想将0附加到crossing_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 :(得分:5)

要获取所需的阵列,可以执行以下操作:

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)