Adding row/column headers to NumPy arrays

后端 未结 5 1449
执笔经年
执笔经年 2020-12-29 03:59

I have a NumPy ndarray to which I would like to add row/column headers.

The data is actually 7x12x12, but I can represent it like this:

5条回答
  •  萌比男神i
    2020-12-29 04:20

    Think this does the trick generically

    Input

    mats = array([[[0, 1, 2, 3, 4, 5],
        [1, 0, 3, 4, 5, 6],
        [2, 3, 0, 5, 6, 7],
        [3, 4, 5, 0, 7, 8],
        [4, 5, 6, 7, 0, 9],
        [5, 6, 7, 8, 9, 0]],
    
       [[0, 1, 2, 3, 4, 5],
        [1, 0, 3, 4, 5, 6],
        [2, 3, 0, 5, 6, 7],
        [3, 4, 5, 0, 7, 8],
        [4, 5, 6, 7, 0, 9],
        [5, 6, 7, 8, 9, 0]]])
    

    Code

    # Recursively makes pyramiding column and row headers
    def make_head(n):
        pre = ''
        if n/26:
            pre = make_head(n/26-1)
    
        alph = "abcdefghijklmnopqrstuvwxyz"
        pre+= alph[n%26]
        return pre
    
    # Generator object to create header items for n-rows or n-cols
    def gen_header(nitems):
        n = -1
        while n

    Output (value stored in mats):

    array([[['A', 'a', 'b', 'c', 'd', 'e', 'f'],
            ['a', '0', '1', '2', '3', '4', '5'],
            ['b', '1', '0', '3', '4', '5', '6'],
            ['c', '2', '3', '0', '5', '6', '7'],
            ['d', '3', '4', '5', '0', '7', '8'],
            ['e', '4', '5', '6', '7', '0', '9'],
            ['f', '5', '6', '7', '8', '9', '0']],
    
           [['A', 'a', 'b', 'c', 'd', 'e', 'f'],
            ['a', '0', '1', '2', '3', '4', '5'],
            ['b', '1', '0', '3', '4', '5', '6'],
            ['c', '2', '3', '0', '5', '6', '7'],
            ['d', '3', '4', '5', '0', '7', '8'],
            ['e', '4', '5', '6', '7', '0', '9'],
            ['f', '5', '6', '7', '8', '9', '0']]], 
          dtype='|S4')
    

提交回复
热议问题