Python Array Slice With Comma?

前端 未结 3 1445
温柔的废话
温柔的废话 2020-11-27 05:25

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 =         


        
相关标签:
3条回答
  • 2020-11-27 05:38

    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

    0 讨论(0)
  • 2020-11-27 05:39

    It slices with a tuple. What exactly the tuple means depends on the object being sliced. In NumPy arrays, it performs a m-dimensional slice on a n-dimensional array.

    >>> class C(object):
    ...   def __getitem__(self, val):
    ...     print val
    ... 
    >>> c = C()
    >>> c[1:2,3:4]
    (slice(1, 2, None), slice(3, 4, None))
    >>> c[5:6,7]
    (slice(5, 6, None), 7)
    
    0 讨论(0)
  • 2020-11-27 05:57

    It is being used to extract a specific column from a 2D array. Refer to the first examples here.

    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.

    0 讨论(0)
提交回复
热议问题