Выровненный матричный массив Python

Вы не могли перебирать или хранить больше данных, чем длина вашего массива. В этом случае вы можете сделать следующее:

for (int i = 0; i <= name.length - 1; i++) { // .... }

Или это:

for (int i = 0; i < name.length; i++) { // ... }
0
задан Hyperplane 13 July 2018 в 14:18
поделиться

2 ответа

Дублирование из: Как напечатать выровненный массив numpy с метками строк и столбцов (текст)?

Но, пожалуйста, обратитесь к этому отклику Энди П., обратите внимание, что вы также может печатать все без ярлыков точно так же, как [

]. Этот код по существу является реализацией scoffey выше, но он не имеет трех ограничений символов и немного более мощный. Вот мой код:

    def format__1(digits,num):
        if digits<len(str(num)):
            raise Exception("digits<len(str(num))")
        return ' '*(digits-len(str(num))) + str(num)
    def printmat(arr,row_labels=[], col_labels=[]): #print a 2d numpy array (maybe) or nested list
        max_chars = max([len(str(item)) for item in flattenList(arr)+col_labels]) #the maximum number of chars required to display any item in list
        if row_labels==[] and col_labels==[]:
            for row in arr:
                print '[%s]' %(' '.join(format__1(max_chars,i) for i in row))
        elif row_labels!=[] and col_labels!=[]:
            rw = max([len(str(item)) for item in row_labels]) #max char width of row__labels
            print '%s %s' % (' '*(rw+1), ' '.join(format__1(max_chars,i) for i in col_labels))
            for row_label, row in zip(row_labels, arr):
                print '%s [%s]' % (format__1(rw,row_label), ' '.join(format__1(max_chars,i) for i in row))
        else:
            raise Exception("This case is not implemented...either both row_labels and col_labels must be given or neither.")

running

    import numpy
    x = numpy.array([[85, 86, 87, 88, 89],
                     [90, 191, 192, 93, 94],
                     [95, 96, 97, 98, 99],
                     [100,101,102,103,104]])
    row_labels = ['Z', 'Y', 'X', 'W']
    column_labels = ['A', 'B', 'C', 'D', 'E']
    printmat(x,row_labels=row_labels, col_labels=column_labels)

дает

         A   B   C   D   E
    Z [ 85  86  87  88  89]
    Y [ 90 191 192  93  94]
    X [ 95  96  97  98  99]
    W [100 101 102 103 104]

Это также будет выход, если «x» были всего лишь вложенными python вместо массива numpy.

0
ответ дан Andre Motta 17 August 2018 в 12:38
поделиться
  • 1
    Также обратите внимание, что с этим кодом, если вы хотите использовать ярлыки, вам нужно использовать как столбцы, так и метки строк. Только один из них не будет работать – Andre Motta 13 July 2018 в 14:23

Самый простой способ улучшить отображение - отделить печать меток и массивов:

In [13]: print('Array:');print(np.arange(4).reshape(2,2))
Array:
[[0 1]
 [2 3]]

В

In [14]: print('Array', np.arange(4).reshape(2,2))
Array [[0 1]
 [2 3]]

печать объединяет строку с str формат массива:

In [15]: print('Array', str(np.arange(4).reshape(2,2)))
Array [[0 1]
 [2 3]]
In [16]: str(np.arange(4).reshape(2,2))
Out[16]: '[[0 1]\n [2 3]]'

str(A) выполняется независимо от большего контекста, поэтому имеет только незначительный отступ, а не большой, который вы хотите.

Чтобы приблизиться к вашему желаемому результату вам придется разбивать и комбинировать эти строки самостоятельно.


Варианты, производящие одно и то же:

In [19]: print('Array\n{}'.format(np.arange(4).reshape(2,2)))
Array
[[0 1]
 [2 3]]

In [22]: print('Array',np.arange(4).reshape(2,2),sep='\n')
Array
[[0 1]
 [2 3]]

Вот что я имею в ум с расщеплением и перестройкой:

In [26]: alist = str(np.arange(6).reshape(3,2)).splitlines()
In [27]: alist
Out[27]: ['[[0 1]', ' [2 3]', ' [4 5]]']
In [28]: header = 'Array: '; offset = '       '
In [29]: astr = [header + alist[0]]
In [30]: for row in alist[1:]:
    ...:     astr.append(offset + row)
    ...:     
In [31]: astr
Out[31]: ['Array: [[0 1]', '        [2 3]', '        [4 5]]']
In [32]: print('\n'.join(astr))
Array: [[0 1]
        [2 3]
        [4 5]]
1
ответ дан hpaulj 17 August 2018 в 12:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: