bgbg bgbg - 24 days ago 8
Python Question

How to delete columns in numpy.array

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?

Answer

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

A = scipy.delete(A, 1, 0)  # delete second row of A
B = scipy.delete(B, 2, 0)  # delete third row of B
C = scipy.delete(C, 1, 1)  # delete second column of C