如何在Python三维列表中实现类似array[:,0,:]的索引选取?
解决Python三维列表的多维切片需求
首先得明确为什么test[:][0][:]达不到预期效果:
test[:]会取出第一维度的所有元素,返回一个包含4个二维列表的新列表(对应原test的z从0到3的每个元素)- 接着
[0]是从这个新列表里取第一个元素,也就是原test[0]这个二维列表 - 最后
[:]是取test[0]里的所有子列表,这就和直接写test[0][:][:]完全一样,自然不符合你要的“第一维全选、第二维取第0个、第三维全选”的需求
Python原生列表没有NumPy那样的多维切片语法,要实现你的需求,用列表推导式就可以:
result = [item[0] for item in test]
或者更完整地写(和item[0]效果一致,因为[:]就是取整个子列表):
result = [item[0][:] for item in test]
这样遍历第一维度的每个元素item,取出每个item里第二维度的第0个元素(也就是第三维度的全部内容),最终得到的结果就和NumPy里array[:,0,:]的效果一致。
内容的提问来源于stack exchange,提问作者Nihilum
相关产品推荐
相关产品推荐

