Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Python Array Slice With Comma?

I was wondering what the use of the comma was when slicing Python arrays - I have an example that appears to work, but the line that looks weird to me is

p = 20*numpy.log10(numpy.abs(numpy.fft.rfft(data[:2048, 0]))) 

Now, I know that when slicing an array, the first number is start, the next is end, and the last is step, but what does the comma after the end number designate? Thanks.

like image 989
SolarLune Avatar asked Apr 02 '12 07:04

SolarLune


People also ask

What does comma mean in slicing Python?

A parenthesized number followed by a comma denotes a tuple with one element. The trailing comma distinguishes a one-element tuple from a parenthesized n . -1.

Can you slice an array in Python?

Python has an amazing feature just for that called slicing. Slicing can not only be used for lists, tuples or arrays, but custom data structures as well, with the slice object, which will be used later on in this article.

What is colon comma in Python?

Now if there is a comma and a colon, python will pass a tuple which contains a slice. in your example: foo[:, 1] # passes the tuple `(slice(None, None, None), 1)`


2 Answers

It is being used to extract a specific column from a 2D array.

So your example would extract column 0 (the first column) from the first 2048 rows (0 to 2047). Note however that this syntax will only work for numpy arrays and not general python lists.

like image 50
Abhranil Das Avatar answered Sep 19 '22 15:09

Abhranil Das


Empirically - create an array using numpy

m = np.fromfunction(lambda i, j: (i +1)* 10 + j + 1, (9, 4), dtype=int) 

which assigns an array like below to m

array(       [[11, 12, 13, 14],        [21, 22, 23, 24],        [31, 32, 33, 34],        [41, 42, 43, 44],        [51, 52, 53, 54],        [61, 62, 63, 64],        [71, 72, 73, 74],        [81, 82, 83, 84],        [91, 92, 93, 94]]) 

Now for the slice

m[:,0] 

giving us

array([11, 21, 31, 41, 51, 61, 71, 81, 91]) 

I may have misinterpreted Khan Academy (so take with grain of salt):

In linear algebra terms, m[:,n] is taking the nth column vector of the matrix m

See Abhranil's note how this specific interpretation only applies to numpy

like image 31
fiat Avatar answered Sep 19 '22 15:09

fiat