On 26.02.2014 00:04, JB wrote: > At the risk of igniting a flame war...can someone please help me understand > the indexing behavior of NumPy? I will readily I admit I come from a Matlab > background, but I appreciate the power of Python and am trying to learn more. > >>From a Matlab user's perspective, the behavior of indexing in NumPy seems > very bizarre. For example, if I define an array: > > x = np.array([1,2,3,4,5,6,7,8,9,10]) > > If I want the first 5 elements, what do I do? Well, I say to myself, Python > is zero-based, whereas Matlab is one-based, so if I want the values 1 - 5, > then I want to index 0 - 4. So I type: x[0:4] > > And get in return: array([1, 2, 3, 4]). So I got the first value of my > array, but I did not get the 5th value of the array. So the "start" index > needs to be zero-based, but the "end" index needs to be one-based. Or to put > it another way, if I type x[4] and x[0:4], the 4 means different things > depending on which set of brackets you're looking at! > > It's hard for me to see this as anything by extremely confusing. Can someone > explain this more clearly. Feel free to post links if you'd like. I know > this has been discussed ad nauseam online; I just haven't found any of the > explanations satisfactory (or sufficiently clear, at any rate). > >
numpy indexing is like conventional C indexing beginning from inclusive 0 to exclusive upper bound: [0, 5[. So the selection length is upper bound - lower bound. as a for loop: for (i = 0; i < 5; i++) select(i); This is the same way Python treats slices. in comparison one based indexing is usually inclusive 1 to inclusive upper bound: [1, 4]. So the selection length is upper bound - lower bound + 1. for (i = 1; i <= 4; i++) select(i); _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion