我有numpy2d数组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],:]
编辑:
我很抱歉我的代码没有工作。我今天真的很忙,所以我不能检查上述代码以及它的意图,为理解伪代码处理,我想要。但是,此代码错误太多。现在,代码被修改了,可以正常工作了。你知道吗
list(assign_interval(A,B,0))
结果
[array([[1],
[1]]), array([[1, 1],
[2, 3]]), array([[1],
[4]])]
在我的环境里。你知道吗
你可以用^{} -
相关问题 更多 >
编程相关推荐