当前位置: 首页 > 面试题库 >

如何检测numpy数组中元素的符号变化

阎渝
2023-03-14
问题内容

我有一个带有正负值的numpy数组。

a = array([1,1,-1,-2,-3,4,5])

我想创建另一个数组,该数组在发生索引变化的每个索引处包含一个值(例如,如果当前元素为正,而前一个元素为负,反之亦然)。

对于上面的数组,我希望得到以下结果

array([0,0,1,0,0,1,0])

或者,可以使用数组中发生符号变化的位置列表或布尔值列表(而不是0和1)代替。


问题答案:

就像是

a = array([1,1,-1,-2,-3,4,5])
asign = np.sign(a)
signchange = ((np.roll(asign, 1) - asign) != 0).astype(int)
print signchange
array([0, 0, 1, 0, 0, 1, 0])

现在,numpy.roll进行循环移位,因此,如果最后一个元素的符号与第一个元素不同,则signchange数组中的第一个元素将为1。如果不需要,当然可以做一个简单的操作

signchange[0] = 0

另外,np.sign认为0具有其自己的符号,不同于正值或负值。例如,即使零线仅“交叉”一次,[-1,0,1]的“
signchange”数组也将为[0,1,1]。如果不希望这样,可以插入行

sz = asign == 0
while sz.any():
    asign[sz] = np.roll(asign, 1)[sz]
    sz = asign == 0

在第一个示例中的第2行和第3行之间。



 类似资料:
  • 问题内容: 在Python中,我们可以使用来获取数组中值的索引。 但是,当我尝试执行NumPy数组时: 我得到: AttributeError:“ numpy.ndarray”对象没有属性“ index” 我如何在NumPy数组上执行此操作? 问题答案: 使用来获得,其中一个给定的条件是指数。 例子: 对于称为的2D : 对于一维数组: 请注意,这也适用于像条件,,等等… 您也可以使用方法创建的子

  • 好的,我对python和numpy还比较陌生,我想做的是取一个随机生成的整数数组,检查每个数字是否多次出现,例如如果它会告诉我6出现两次。或者如果则每个整数都是不同的。

  • 问题内容: 几年前从这个问题开始,在numpy中是否有规范的“移位”功能?我从文档中看不到任何东西。 这是我正在寻找的简单版本: 使用它就像: 这个问题来自于我昨天尝试[编写快速滚动产品的](http://codingdict.com/questions/163825尝试。我需要一种“转移”累积乘积的方法,我所能想到的就是在中复制逻辑。 因此比快得多。此版本的功能执行得更好: 更快的版本只是简单地

  • 问题内容: 对React组件和React元素均测试为true。我将如何具体测试对象是React组件?目前,我正在通过测试进行操作,但我希望有更好的方法。 问题答案: 使用npm安装。在这一点上,没有直接的方法可用来检查其有效性。你在做什么是正确的。

  • 问题内容: 如何检测div元素中的垂直文本溢出? CSS: HTML: 问题答案: 您可以通过将scrollHeight与clientHeight进行比较轻松地做到这一点,请尝试以下操作: 有关更多信息,请查看:http : //help.dottoro.com/ljbixkkn.php