我正在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'>
区分矢量和矩阵的最佳方法是什么?
答案 0 :(得分:1)
在尝试在Sage源中找到定义matrix.dim
时,偶然发现了解决方案。
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")