gpt4 book ai didi

python - 如何制作前一个值不满足条件的索引数组?

转载 作者:太空宇宙 更新时间:2023-11-04 10:29:52 24 4
gpt4 key购买 nike

我有两个数组(v_1v_2),我有一个函数接受这些数组,找到它们的值超过阈值的索引,找到前一个和数组的下一个值,并返回一个新数组(v_1fv_2f),其中包含前一个值不满足阈值的索引。

但是,出于某种原因,return 语句没有给我这些数组。这是为什么?另外,这个函数是否应该生成一个具有我想要的条件的数组?

def findbursts(v_1,v_2):

for index, obj in enumerate(v_1):
if obj == thresh:
v_1f=(obj).nonzero()[0]
# TODO Bounds-checking
previous = v_1f[index - 1]
if previous == None:
v_1ff = v_1f

for index, obj in enumerate(v_2):
if obj == thresh:
v_2f=(obj).nonzero()[0]
# TODO Bounds-checking
previous = v_2f[index - 1]
if previous == None:
v_2ff = v_2f

return [v_1ff, v_2ff]

最佳答案

  1. 你可能需要 obj >= thresh , 使用 ==与您的问题描述不符。
  2. 为什么要将之前的值与 None 进行比较?您需要检查它是否为 < thresh
  3. 你能澄清一下 nonzero() 是什么吗?打电话是为了?
  4. 您实际上并没有在循环中创建数组。 v_1ffv_2ff是单值。
    修复它的一种方法是预先创建列表 ( v_1ff = [] ),然后在匹配条件时将找到的值附加到列表中。
  5. v_1ff实际上是之前的,而不是之前的索引 -- 你想要哪个?
  6. 如果您对两个列表执行完全相同的操作,那么创建一个函数来为单个列表执行此操作然后只调用它两次会更简洁。

您可能可以通过列表理解更轻松地完成所有这些工作:

from itertools import izip

def find_bursts(data, thresh):
return [i for i, (val, next_val) in enumerate(izip(data[:-1], data[1:]))
if val < thresh and next_val >= thresh]

分割:

  • izip(data([:-1], data[1:])以相邻元素对的形式遍历您的数组
  • enumerate附上索引
  • if val < thresh and next_val >= thresh是你的过滤条件

关于python - 如何制作前一个值不满足条件的索引数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27452440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com