【发布时间】:2018-08-30 18:09:42
【问题描述】:
我在问这个问题的一种概括:
Best way to extract elements from nested lists。
这也与这些问题有关:
recursive function for extract elements from deep nested lists/tuples
Scheme - find most deeply values nested lists
Scheme - find most deeply nested lists
基本上,我有一些任意的嵌套列表结构,在底部有各种形状相同的 numpy 数组。我想迭代或切片所有这些底层数组,同时保留它们所在的嵌套列表结构。这是关于在输出中保留嵌套结构的这一部分,这似乎在这些其他问题中没有得到回答。
所以,例如:
A = np.ones((3,3,3))
nest = [[A,A,A],[[A,A,[A,A]],[A,A]],A]
我们想要,示意性地,
nest[0,...] == [[A[0,...],A[0,...],A[0,...]],[[A[0,...],A[0,...],[A[0,...],A[0,...]]],[A[0,...],A[0,...]]],A[0,...]]
或
nest[1:3,5,:] == [[A[1:3,5,:],A[1:3,5,:],A[1:3,5,:]],[[A[1:3,5,:],A[1:3,5,:],[A[1:3,5,:],A[1:3,5,:]]],[A[1:3,5,:],A[1:3,5,:]]],A[1:3,5,:]]
我确信一些聪明的递归函数或其他东西可以做到这一点,我的大脑现在还没有想出它......
我想如果这将视图返回到底层数组而不是复制它们的一部分,那也是最好的。
编辑:也许这样的事情可以工作:https://stackoverflow.com/a/43357135/1447953。该方法需要以某种方式将 numpy 切片操作转换为函数,我想这可以根据具体情况进行,所以也许这就是要走的路。
【问题讨论】:
-
我看到了 2 个任务 - 一个函数,可能是递归的,按照你的方式工作,以及一个函数来处理数组。在交互式会话中分小步发展这些。