2009-04-24 16 views
4

すぐにnumPyを確認しましたが、配列をベクターとして使用しているようですね。私はインスタンス化して作業できる適切なVector3タイプを探しています。PythonにVector3型がありますか?

+0

NumPyの配列ではサポートしていない機能は何ですか? –

+0

インスタンスメソッドを持つ専用型が必要です。 –

+0

一度に何千ものベクトルを操作すると、各ベクトルに別々のオブジェクトを使用すると潜在的に非効率的になる可能性があることを考慮してください。ベクトルで構成された行列は、ベクトル化とも呼ばれるこの問題を回避します。間違いなくもっと有用なクラスは、多くのベクトルを格納し、例えば以下のようなメソッドを提供する 'Vector'クラスです。一気に正規化するなど –

答えて

4

ScientificPythonは、Vectorクラスを有する。たとえば:

In [1]: from Scientific.Geometry import Vector 
In [2]: v1 = Vector(1, 2, 3) 
In [3]: v2 = Vector(0, 8, 2)    
In [4]: v1.cross(v2) 
Out[4]: Vector(-20.000000,-2.000000,8.000000) 
In [5]: v1.normal() 
Out[5]: Vector(0.267261,0.534522,0.801784) 
In [6]: v2.cross(v1) 
Out[6]: Vector(20.000000,2.000000,-8.000000) 
In [7]: v1*v2 # dot product 
Out[7]: 22.0 
5

見つけたthis、多分それはあなたが欲しいことをすることができます。

+0

ありがとうございます。 –

2

私は標準的なものはないと信じていますが(私は間違っている可能性があります、私は密接にそのpythonに追いついていない)。

実装が非常に簡単ですし、とにかくnumpy配列の上に構築することもできます。これは、多くの優れた(効率的な)ビットとピースを提供します。

+0

ありがとう、しかし、私はそれのインスタンスメソッドを記述することができますか?つまり、配列の型は私にこれを可能にします:vector.Unitize() –

+0

インスタンスメソッドについてはどういうことが特別ですか?またはカスタムクラス。結局のところ、これはPythonであり、JavaやC#ではありません。さらに、Simonはnumpy配列を拡張することをお勧めしていると思います。これはインスタンスメソッドを提供しますか? –

関連する問題