johnhenry - 1 year ago 48

Python Question

I have a two-dimensional matrix

`matrixK`

`matrixK = [[0,1,2,3,4],[5,6,7,8,9],[10,11,12,13,14]]`

I need to delete certain columns of the matrix, and these columns need to be chosen according to a pattern that depend on their index as columns.

In other words,

`for i in range(number_of_columns)`

if (i satisfy a certain condtion):

column[i] needs to be deleted.

and as a final result I need to get the same initial

`matrixK`

To make an example, referring to the

`matrixK`

`for i in range(5):`

if (i%2==0):

column[i] needs to be deleted

which should delete columns 2 and 4.

Answer

This can be done two different ways depending on whether you need to delete the column in-place in the original matrix or can just replace it with a new one. An example of each way is shown below.

Note that neither requires every row of the matrix to be the same length.

```
# in-place removal of column in matrix
matrixK = [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]
for row in matrixK:
for i in reversed(range(len(row))):
if i % 2 == 0:
del row[i:i+1]
print('matrixK after: {}'.format(matrixK))
```

Or:

```
# removal of column in matrix by recreating it
matrixK = [[0, 1, 2, 3, 4], [5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]
matrixK = [[row[i] for i in range(len(row)) if i % 2] for row in matrixK]
print('matrixK after: {}'.format(matrixK))
```

Both output:

```
matrixK after: [[1, 3], [6, 8], [11, 13]]
```

Source (Stackoverflow)