在python中切片多维数组

时间:2014-10-25 23:27:32

标签: python multidimensional-array

我正在尝试删除二维数组中的特定索引,如下所示。

a = [[1, *2, 3]
     [4, 5, 6*]
     [7*, 8, 9]]

我想删除3x3数组的特定索引(带*)并使其成为2x3数组。

a = [[1, 3]
     [4, 5]
     [8, 9]]

怎么做?

更新

删除()时出错:

enter image description here

2 个答案:

答案 0 :(得分:1)

使用pop()

>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> a[0].pop(1)
>>> a[1].pop(2)
>>> a[2].pop(0)
>>> a
[[1, 3], [4, 5], [8, 9]]

使用del

>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> del a[0][1]
>>> del a[1][2]
>>> del a[2][0]
>>> a
[[1, 3], [4, 5], [8, 9]]

使用numpy.delete()

>>> a = numpy.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
>>> b = numpy.zeros((3, 2))
>>> b[0] = numpy.delete(a[0], 1)
>>> b[1] = numpy.delete(a[1], 2)
>>> b[2] = numpy.delete(a[2], 0)
>>> b
array([[1, 3], [4, 5], [8, 9]])

答案 1 :(得分:0)

如果我们使用列表清单

...
delenda = [1,2,0]
for i, row in enumerate(a):
    row.pop(delenda[i])

也作为一种功能

def multipop(list_of_lists_2D, delenda):
    for i, row in enumerate(list_of_lists_2D):
        row.pop(delenda[i])

multipop(a,[1,2,0])

请注意pop运行到位,无需返回修改后的列表