zero_crossings2基本上检测标志变化.如果有一个zero_crossings2我想附加1到crossing_list,否则我想附加一个0到crossing_list.代码np.where(np.diff(np.sign(a2)))[0]可以确定符号更改的索引.因此,如果它返回结果,我想在该特定位置返回"1",并且在任何地方都不会检测到符号更改.
这是我的代码的当前状态:
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)
Run Code Online (Sandbox Code Playgroud)
我遇到麻烦的是在if语句中,"X"是未知的,所以我不知道列表中的哪个元素.
我的预期输出是:
[0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1]
Run Code Online (Sandbox Code Playgroud)
要获得所需的阵列,您可以:
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)
Run Code Online (Sandbox Code Playgroud)
缺少第一个零(因为第一个数字crossings对应于第一个和第二个数字的交叉a2),因此您可以添加它:
crossings = np.insert(crossings, 0, 0)
Run Code Online (Sandbox Code Playgroud)