Python 如何用numpy或scipy分割不等式区间
我有numpy 2d数组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
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]