2016-11-09 3 views
1

так вот моя матрица:Как создать строку, которая отображает количество записей столбцов в матрице с использованием python/sage?

A = matrix([[1,1,2,2,2], 
      [3,1,4,3,3], 
      [0,4,2,4,0], 
      [0,0,2,0,0], 
      [0,0,2,0,0]]) 

Я хотел бы вставить 0 строку, которая отображает количество записей столбцов.

Это был мой исходный код:

A = matrix([[1,1,2,2,2], 
      [3,1,4,3,3], 
      [0,4,2,4,0], 
      [0,0,2,0,0], 
      [0,0,2,0,0]]) 
puzzle = A.insert_row(0, sum(A)) 

Что не так с этим кодом является то, что он дает мне сумму каждого столбца, когда мне просто нужно подсчет каждого столбца.

То, что я

[ 4 6 12 9 5] 
[ 1 1 2 2 2] 
[ 3 1 4 3 3] 
[ 0 4 2 4 0] 
[ 0 0 2 0 0] 
[ 0 0 2 0 0] 

Желаемая

[ 2 3 5 3 2] 
[ 1 1 2 2 2] 
[ 3 1 4 3 3] 
[ 0 4 2 4 0] 
[ 0 0 2 0 0] 
[ 0 0 2 0 0] 

Бест,

Давида

+0

Думайте, что вам может быть лучше, если вы разместите здесь статью (https://ask.sagemath.org/questions/) –

+0

Также задайте вопрос по адресу https://ask.sagemath.org/question/35493/how-to-create-a- row-that-shows-the-counts-of-column-entries-in-a-matrix-using-pythonage/ –

ответ

1

Попробуйте nonzero_positions_in_column метод:

sage: A = matrix([[1,1,2,2,2], 
....:    [3,1,4,3,3], 
....:    [0,4,2,4,0], 
....:    [0,0,2,0,0], 
....:    [0,0,2,0,0]]) 
sage: A.column(1) 
(1, 1, 4, 0, 0) 
sage: A.nonzero_positions_in_column(1) 
[0, 1, 2] 

sage: v = vector([len(A.nonzero_positions_in_column(i)) for i in range(A.ncols())]) 
sage: A.insert_row(0, v) 
[2 3 5 3 2] 
[1 1 2 2 2] 
[3 1 4 3 3] 
[0 4 2 4 0] 
[0 0 2 0 0] 
[0 0 2 0 0] 
+0

Это сработало отлично! Благодарю. –