Знать, является ли аргумент, переданный функции, вектором или матрицей - PullRequest
0 голосов
/ 05 января 2012

Я пишу функцию в Sage, которая должна работать по-разному для векторов и матриц.

Я не могу использовать функцию isinstance, потому что тип вектора или матрицы зависит от типа элементов:

sage: type(matrix([[1]]))
<type 'sage.matrix.matrix_integer_dense.Matrix_integer_dense'>
sage: type(matrix([[i]]))
<type 'sage.matrix.matrix_symbolic_dense.Matrix_symbolic_dense'>

Как лучше всего различать векторы и матрицы?

1 Ответ

1 голос
/ 05 января 2012

Решение было случайно найдено при попытке найти определение matrix.dim в источнике Sage.

from sage.matrix.matrix import is_Matrix
from sage.structure.element import is_Vector

def myfunction(x):
    if is_Vector(x):
        # do something
    elif is_Matrix(x):
        # do something else
    else:
        raise TypeError("The argument must be vector or matrix")
...