2012-01-05 15 views
0

私はベクトルと行列のために異なる方法で動作するはずの関数を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'> 

ベクトルや行列を区別するための最良の方法は何ですか?

+2

「matrix.dim」でディメンションを確認するだけです。 –

+0

@DavidZwicker、「matrix.dim」とその使い方について説明できますか? –

答えて

1

セージソースで定義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") 
関連する問題