Дублирование из: Как напечатать выровненный массив numpy с метками строк и столбцов (текст)?
Но, пожалуйста, обратитесь к этому отклику Энди П., обратите внимание, что вы также может печатать все без ярлыков точно так же, как [
]. Этот код по существу является реализацией scoffey выше, но он не имеет трех ограничений символов и немного более мощный. Вот мой код:
def format__1(digits,num):
if digits
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.
После оригинальной статьи Х. Берда, ведущим примером этого утверждения является обращение списка для односвязных списков, которое можно определить как
reverse([a : x]) = append(reverse x, a)
В прямой реализации добавить [115 ] до конца хвоста x
требуется n-1
операций поиска, чтобы найти конец, и количество операций для reverse x
, так что общее усилие составляет (n-1)+...+2+1=n*(n-1)/2
.
В линейной реализации используется асимметричная сложность операции append
, поскольку append(x,y)
имеет стоимость, пропорциональную длине x
, в то время как длина y
не играет никакой роли. В качестве частичной операции append
является эндоморфизмом в пространстве списков, append(x) y = append(x,y)
. Теперь представьте перевернутый список как результат объединения этих эндоморфизмов
reverse([a1,a2,...,an])=append(an) ... append(a2) append(a1) []
, из которых восстановление списка является операцией с линейными затратами. Ранее квадратичная «основная» стоимость «скрыта» в управлении стеком операций. Однако, в конце концов, это на самом деле не нужно, так как восстановление результирующего списка может начинаться с извлечения первого элемента. Для этого нужен «накопительный элемент», в том же диком псевдокоде
reverse(x) = reverse_recursion(x,[])
где
reverse_recursion([a : x], y) = reverse_recursion(x, [a : y])
с
reverse_recursion([], y) = y