I would like to delete selected columns in a numpy.array . This is what I do:

```
n [397]: a = array([[ NaN, 2., 3., NaN],
.....: [ 1., 2., 3., 9]])
In [398]: print a
[[ NaN 2. 3. NaN]
[ 1. 2. 3. 9.]]
In [399]: z = any(isnan(a), axis=0)
In [400]: print z
[ True False False True]
In [401]: delete(a, z, axis = 1)
Out[401]:
array([[ 3., NaN],
[ 3., 9.]])
```

In this example my goal is to delete all the columns that contain NaN's. I expect the last command to result in:

```
array([[2., 3.],
[2., 3.]])
```

How can I do that?

Given its name, I think the standard way should be `delete`

:

```
import numpy as np
A = np.delete(A, 1, 0) # delete second row of A
B = np.delete(B, 2, 0) # delete third row of B
C = np.delete(C, 1, 1) # delete second column of C
```

According to numpy's documentation page, the parameters for `numpy.delete`

are as follow:

`numpy.delete(arr, obj, axis=None)`

`arr`

refers to the input array,`obj`

refers to which sub-arrays (e.g. column/row no. or slice of the array) and`axis`

refers to either column wise (`axis = 1`

) or row-wise (`axis = 0`

) delete operation.

Example from the numpy documentation:

```
>>> a = numpy.array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15]])
>>> numpy.delete(a, numpy.s_[1:3], axis=0) # remove rows 1 and 2
array([[ 0, 1, 2, 3],
[12, 13, 14, 15]])
>>> numpy.delete(a, numpy.s_[1:3], axis=1) # remove columns 1 and 2
array([[ 0, 3],
[ 4, 7],
[ 8, 11],
[12, 15]])
```

Licensed under: CC-BY-SA with attribution

Not affiliated with: Stack Overflow