我有一个带有正值和负值的 numpy 数组。
a = array([1,1,-1,-2,-3,4,5])
我想创建另一个数组,它在每个发生符号变化的索引处包含一个值(例如,如果当前元素为正而前一个元素为负,反之亦然)。
对于上面的数组,我希望得到以下结果
array([0,0,1,0,0,1,0])
或者,数组中发生符号变化的位置列表或布尔值列表而不是 0 和 1 都可以。
原文由 Robert Christie 发布,翻译遵循 CC BY-SA 4.0 许可协议
就像是
现在,numpy.roll 进行循环移位,所以如果最后一个元素的符号与第一个不同,则 signchange 数组中的第一个元素将为 1。如果不需要,当然可以做一个简单的
此外, np.sign 认为 0 有它自己的符号,不同于正值或负值。例如,[-1,0,1] 的“signchange”数组将是 [0,1,1],即使零线仅“越过”一次。如果这是不需要的,可以插入行
在第一个示例中的第 2 行和第 3 行之间。