Python Forum

Full Version: how to select particular rows data from a array
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
I am new programmer to python. 
I have a text file having 360 rows and 190 columns of data. 
In matlab, if I load the text file and x_data will be variable of size 360x190 columns.
If I want to select 1 to 20 , 46 to 65, ... rows of data , I simply give 
x_data_train = xdata([1:20,46:65,91:110,136:155,181:200,226:245,271:290,316:335], :);
the resulting x_data_train will be the array of my desired. 

How can do that in python ? 


x_data = np.loadtxt('dataset_300mm.txt', unpack=True)
x_data_train = []
x_data_train.append(x_data[1:20],
                   x_data[46:65],
                   x_data[91:110],
                   x_data[136:155],
                   x_data[181:200],
                   x_data[226:245],
                   x_data[271:290],
                   x_data[316:335])
if I do using append operation , the resultant of the array is strange , it is array of 8 subsets of array for 20*192, but I want it to be one array 160*192
I think you should show more on original file structure.
It seems to me there should be an easier way to do this
however this should do it for what you have
x_data_train.append([0:19], [45:64])
assuming you want the first 20 elements which are numbered 0 - 19
and 20 more beginning with the 45th.
I am rather surprised that x_data_train.append(...) works at all. As x_data_train is a casual python list, append() takes only one argument - so you can make it work with either appending one array repeatedly or appending (or extending by) a list of your arrays. In either case you would end with a list (or even a list of lists) of arrays.

Numpy provides .concatenate(), that should work for you:

x_data_test = np.concatenate([x_data[0:20], x_data[45:64]])
Another way would be to construct  some "index" sequence and select on it - it could be list of  numbers of wanted rows or list of booleans.
thank you zivoni np.concatenate works