【发布时间】:2020-02-16 13:42:56
【问题描述】:
类似于question,假设我有一个 3D Numpy 数组,为了清楚起见,我在上面添加了一个注释标签:
#C C C R R C C C R R C C C
a = [[[10,11,12,13,14,15,16,17,18,19,20,21,22],
[23,24,25,26,27,28,29,30,31,32,33,34,35]],
[[36,37,38,39,40,41,42,43,44,45,46,47,48],
[48,49,50,51,52,53,54,55,56,57,58,59,60]],
[[61,62,63,64,65,66,67,68,69,70,71,72,73],
[74,75,76,77,78,79,80,81,82,83,84,85,86]]]
我可以在一行代码中删除标记为R 的列吗?因此,从索引 3 开始,每隔五个元素删除两列。在这种情况下,生成的数组将如下所示:
#C C C C C C C C C
a = [[[10,11,12,15,16,17,20,21,22],
[23,24,25,28,29,30,33,34,35]],
[[36,37,38,41,42,43,46,47,48],
[48,49,50,53,54,55,58,59,60]],
[[61,62,63,66,67,68,71,72,73],
[74,75,76,79,80,81,84,85,86]]]
我想让代码更通用,以便它可以处理删除不同大小和位置的 3D 数组中的列对。对于此示例,我可以使用以下命令一次删除一列:
start = 3
step = 5
a = numpy.delete(big, numpy.s_[start:numpy.size(big, 2):step], 2)
a = numpy.delete(a, numpy.s_[start:numpy.size(a, 2):step - 1], 2)
但是有没有办法指定要删除的列范围,从而在一行代码中完成任务?
【问题讨论】:
标签: python arrays numpy multidimensional-array