On 7 February 2013 09:37, Jean-Michel Pichavant <jeanmic...@sequans.com> wrote: > ----- Original Message ----- > >> Hi Python experts, >> I am working with an array of data and am trying to plot several >> columns of data which are not continuous; i.e. I would like to plot >> columns 1:4 and 6:8, without plotting column 5. The syntax I am >> currently using is: >> >> oplot (t,d[:,0:4]) >> [SNIP] > > x = x[0:4]+ x[5:8] > y = y[0:4]+ y[5:8] > > skips the element at index 4, meaning the fifth columns. > Alternatively, > > x = x[:4]+ x[5:] > y = y[:4]+ y[5:] > > skips the 5th element without regard for the length of the list. > http://docs.python.org/release/2.3.5/whatsnew/section-slices.html
I'm guessing from the multi-dimensional slice syntax that d is a numpy array in which case the + operator attempts to sum the two arrays element-wise (resulting in an error if they are not the same shape): >>> from numpy import array >>> a = array([[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]]) >>> a array([[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, 9], [10, 11, 12]]) >>> a[:,0] array([ 1, 4, 7, 10]) >>> a[:,1] array([ 2, 5, 8, 11]) >>> a[:,0] + a[:,1] array([ 3, 9, 15, 21]) >>> a[:,0] + a[:, 1:] Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: operands could not be broadcast together with shapes (4) (4,2) To do this with a numpy array use fancy indexing: >>> a[:, [0, 2]] array([[ 1, 3], [ 4, 6], [ 7, 9], [10, 12]]) So a solution could be: included = [0, 1, 2, 3, 5, 6, 7] oplot (t,d[:, included]) Oscar -- http://mail.python.org/mailman/listinfo/python-list