Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.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
Python 如何用numpy或scipy分割不等式区间_Python_Numpy_Scipy - Fatal编程技术网

Python 如何用numpy或scipy分割不等式区间

Python 如何用numpy或scipy分割不等式区间,python,numpy,scipy,Python,Numpy,Scipy,我有numpy 2d数组A=[[1,1,1,1,1],[1,2,3,4,5]] 我想要一个函数(a,B,axis)来分配间隔,结果是 ([[1,1],[1,2]],[[1,1,1],[2,3,4]],[[1,1],[4,5]]) ,有效地使用间隔位置B=[0,1,3,4]和axis=0。此外,最好像使用生成器一样延迟分配每个切片矩阵,因为这些矩阵可能非常大。 我知道通过for循环和yield迭代器很容易实现,但我不尽可能使用loop来提高性能 你知道最好的方法吗 在我看来 def assig

我有numpy 2d数组
A=[[1,1,1,1,1],[1,2,3,4,5]]

我想要一个函数(a,B,axis)来分配间隔,结果是

([[1,1],[1,2]],[[1,1,1],[2,3,4]],[[1,1],[4,5]])
,有效地使用间隔位置
B=[0,1,3,4]
axis=0
。此外,最好像使用生成器一样延迟分配每个切片矩阵,因为这些矩阵可能非常大。 我知道通过for循环和yield迭代器很容易实现,但我不尽可能使用loop来提高性能

你知道最好的方法吗

在我看来

 def assign_interval(A,B,axis):
     if axis == 0:
        for i in range(len(B)-1):
            yield A[:,B[i]:B[i+1]]
     else:
        for i in range(len(B)-1):
            yield A[B[i]:B[i+1],:]
编辑:

很抱歉,我的代码不起作用。我今天真的很忙,所以我不能很好地检查上面的代码,这是为了理解我想要处理的伪代码。但是,这段代码犯了太多错误。现在,代码已经修改,可以正常工作了

列表(分配间隔(A、B、0))

结果

[array([[1],
    [1]]), array([[1, 1],
    [2, 3]]), array([[1],
    [4]])]
在我的环境中。

您只需使用-


我无法使用给定的输入运行func
assign\u interval
。@divaker感谢您指出我的错误。我修改了。这对我的申请很有帮助!axis不需要我的原始枚举。所以它不需要函数。您的代码非常有用。我真的很感激!
def assign_interval_split(A,B,axis):
    if axis == 0:
        return np.split(A[:,B[0]:B[-1]],B-B[0],axis=1)[1:-1]
    else:
        return np.split(A[B[0]:B[-1]],B-B[0],axis=0)[1:-1]