是否有可能在guvectorize函数中返回具有未知输出数组形状的数组

时间:2018-12-19 08:56:05

标签: python arrays numpy numba

我想知道如何通过numba guvectorize函数先验大小来返回数组。 我基本上有一个接收向量的函数,然后返回一个数组,该数组的大小将在函数中改变。我的问题是我无法事先设置返回数组的形状。

例如:

@guvectorize ([(float64[:],int64[:,:])], '(n),()->(n,2)')
def mysegmentation(Thresholding,StimSegments_time):
    count = 0
    for i in range(Thresholding.shape[0]-1):
        if Thresholding[i]==0. and Thresholding[i+1]==1.:
            StimSegments_time[count,0] = i 
        elif Thresholding[i]==1. and Thresholding[i+1]==0.:
            StimSegments_time[count,1] = i
            count += 1

阈值可以具有(1000)个元素,而StimSegments_time可以具有(5,2)或(7,2)或其他(x,2)

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。但是我能提供的所有帮助是,您不能在装饰器中添加固定的数字(即->(n,2)不正确)。

对于这个问题,人们建议在输入中添加一个虚拟数组参数,并在输出中使用其长度,如此处所述:

guvectorize not accepting new size variable