Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Extract Specific RANGE of columns in numpy array Python

Tags:

I have an array :

e = np.array([[ 0,  1,  2,  3, 5, 6, 7, 8],
              [ 4,  5,  6,  7, 5, 3, 2, 5],
              [ 8,  9, 10, 11, 4, 5, 3, 5]])

I want to extract array by its columns in RANGE, if I want to take column in range 1 until 5, It will return

e = np.array([[ 1,  2,  3, 5, ],
              [ 5,  6,  7, 5, ],
              [ 9, 10, 11, 4, ]])

How to solve it? Thanks

like image 913
mfathirirhas Avatar asked Feb 24 '16 05:02

mfathirirhas


2 Answers

You can just use e[:, 1:5] to retrive what you want.

In [1]: import numpy as np

In [2]: e = np.array([[ 0,  1,  2,  3, 5, 6, 7, 8],
   ...:               [ 4,  5,  6,  7, 5, 3, 2, 5],
   ...:               [ 8,  9, 10, 11, 4, 5, 3, 5]])

In [3]: e[:, 1:5]
Out[3]:
array([[ 1,  2,  3,  5],
       [ 5,  6,  7,  5],
       [ 9, 10, 11,  4]])

https://docs.scipy.org/doc/numpy/reference/arrays.indexing.html

like image 58
whbb Avatar answered Sep 20 '22 06:09

whbb


Numpy row and column indices start counting at 0.

The rows are specified first and then the column with a comma to separate the row from column.

The ":" (colon) is used to shortcut all rows or all columns when it is used alone.

When the row or column specifier has a range, then the ":" is paired with numbers that specify the inclusive start range and the exclusive end range.

For example

import numpy as np
np_array = np.array( [ [ 1, 2, 3, ],
                       [ 4, 5, 6, ],
                       [ 7, 8, 9  ] ]  )

first_row = np_array[0,:]
first_row
output: array([1, 2, 3])

last_column = np_array[:,2]
last_column
output: array([3, 6, 9])

first_two_vals = np_array[0,0:2]
first_two_vals
output: array([1, 2])
like image 28
netskink Avatar answered Sep 19 '22 06:09

netskink