python - 是否可以在 python 中切片多维列表(不是 numpy)?
问题描述
这个问题与这个问题相同,但针对的是原生 python 列表。
假设如下:
import numpy as np
a = np.ones((5, 6, 7))
a_list = a.tolist()
我可以a
像这样切片:
a_slice = a[2:4, 4:, :3]
以某种方式同样可能a_list
吗?
问的原因是我得到一个嵌套列表流,例如a_list
,只想保存流的一部分以供以后使用。
我不想为此通过一个 numpy 数组,因为它每次都会分配内存,这是非常次优的。
我正在寻找一种方法来实现这一点。
编辑 shivam_Jha
import numpy as np
a = np.ones((5, 6, 7))
a_list = a.tolist()
a_list
Out[20]:
[[[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]],
[[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]],
[[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]],
[[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]],
[[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0],
[1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]]]
期待输出
a[2:4, 4:, :3].tolist()
Out[21]: [[[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]], [[1.0, 1.0, 1.0], [1.0, 1.0, 1.0]]]
解决方案
In [65]: a = np.ones((5,6,7),int)
In [66]: alist = a.tolist()
In [67]: len(alist)
Out[67]: 5
In [68]: a[2:4, 4:, :3].shape
Out[68]: (2, 2, 3)
In [69]: np.array(alist[2:4]).shape
Out[69]: (2, 6, 7)
In [70]: np.array([a1 for a1 in alist[2:4]]).shape
Out[70]: (2, 6, 7)
In [71]: np.array([a1[4:] for a1 in alist[2:4]]).shape
Out[71]: (2, 2, 7)
In [72]: np.array([[a2[:3] for a2 in a1[4:]] for a1 in alist[2:4]]).shape
Out[72]: (2, 2, 3)
推荐阅读
- javascript - 需要使用日期时间提示提供额外建议以在 bot 框架中使用
- javascript - 是否可以在填充猫鼬中将缓冲区转换为 base64string?
- apache-kafka - 如何使用 Spring Cloud Sleuth 跟踪 Kafka 流
- powershell - “找不到路径,因为它不存在”,但要处理的文件夹数与文件文本中的文件夹数不同
- json - 如何使用 Strapi cms 在 Nuxt 中显示我的博客图像(以集合类型)?
- javascript - 如何在nodejs的另一条路由中导入一个路由响应?
- scala - 隐式参数优先级
- c# - Windows 窗体 MetroModernUI 包、GridView 控件和重叠按钮的 UI 呈现问题
- informatica - 如何删除一个表并通过 informatica Pre sql 重新创建它?
- flutter - 如何仅在飞镖中正确转换时间