Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 如何在numpy数组中查找从一个元素到下一个元素的状态转换?_Arrays_Numpy - Fatal编程技术网

Arrays 如何在numpy数组中查找从一个元素到下一个元素的状态转换?

Arrays 如何在numpy数组中查找从一个元素到下一个元素的状态转换?,arrays,numpy,Arrays,Numpy,我想确定数据集中的状态转换。例如:“sin(x)在哪个指数下低于0.5?” 我能想到的唯一办法是: a = np.arange(0,10,.01) b= np.sin(a) c = np.roll(b,1) c[:1] = 0 print(a[(.5 > b) & (.5< c)]) [2.62 8.91] a=np.arange(0,10,01) b=np.sin(a) c=np滚动(b,1) c[:1]=0 打印(a[(.5>b)和(.5

我想确定数据集中的状态转换。例如:“sin(x)在哪个指数下低于0.5?”

我能想到的唯一办法是:

a = np.arange(0,10,.01)
b= np.sin(a)
c = np.roll(b,1)
c[:1] = 0
print(a[(.5 > b) & (.5< c)])
[2.62 8.91]
a=np.arange(0,10,01)
b=np.sin(a)
c=np滚动(b,1)
c[:1]=0
打印(a[(.5>b)和(.5

我能在没有额外数组c的情况下完成吗?如何检测像“sin(x)在哪个索引下降到0.5以下并保持7个样本?”这样的情况?我需要7个额外的数组吗?

对于7个步骤,您可以只构建一个中间数组:

mask = (b < 0.5)
window = 7

# count the number of times the value is below thresh in the window
below_thresh = np.sum([mask[i:len(mask)-window+i] for i in range(window)], axis=0)

mask1 = below_thresh == window

a[window + 1:][mask1[1:] & (~mask1[:-1])]
# out 
# array([2.62, 8.91])
mask=(b<0.5)
窗口=7
#计算该值在窗口中低于阈值的次数
低于_thresh=np.sum([mask[i:len(mask)-window+i]表示范围内的i(window)],轴=0)
mask1=低于阈值==窗口
[window+1:][mask1[1::&(~mask1[:-1])]
#出去
#数组([2.62,8.91])

要获得更多的步骤,您可以使用
as_stripped

genius。。。我如何得到相应的索引呢?第一个掩码和第二个掩码彼此独立,对吗?索引在
mask[1::&(~mask[:-1])
True
并按
window+1
移位。所以有些东西
np.where(mask[1::&(~mask[:-1])+window+1
?@AndreasSchuldei是的,只需重用相同的变量来节省一些内存。请参阅更新。