2009-04-24 3 views
4

신속하게 numPy를 확인했지만 배열을 벡터로 사용하는 것 같습니다. 인스턴스화하고 작업 할 수있는 적절한 Vector3 유형을 찾고 있습니다.Python에서 Vector3 유형이 있습니까?

+0

NumPy의 배열이 지원하지 않는 것은 무엇입니까? –

+0

인스턴스 메서드가있는 전용 형식이 필요합니다. –

+0

한 번에 수천 개의 벡터를 조작하는 경우 각 벡터에 별도의 개체를 사용하면 잠재적으로 비효율적 일 수 있습니다. 벡터로 구성된 행렬은 벡터화라고도하는이 문제를 피합니다. 틀림없이 더 유용한 클래스는 많은 벡터를 저장하고 예를 들어 메소드를 제공하는'Vector' 클래스입니다. 한 번에 모두 정상화. –

답변

4

ScientificPythonVector 클래스가 있습니다. 예 :

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

I 표준 거기에 아무것도 생각하지 않는다 (하지만 잘못 될 수있다, 나는 밀접하게 파이썬과 함께 보관하지 마십시오).

그것은하지만 구현하기 매우 쉽습니다, 당신은 당신에게 좋은 (효율적인) 비트와 조각을 많이 제공 어쨌든위한 컨테이너로 NumPy와 배열의 상단에 구축 할 수 있습니다.

+0

고마워,하지만 그것에 대한 인스턴스 메서드를 작성할 수 있습니까? 배열 형식을 사용하면 다음과 같이 처리 할 수 ​​있습니다. vector.Unitize() –

+0

인스턴스 메서드는 무엇이 특별합니까? 또는 사용자 정의 클래스. 이것은 파이썬이다. 결국 자바 나 C#이 아니다. 게다가, 사이먼이 너에게 numpy 배열을 확장 할 것을 권하고 있다고 믿는다. –

관련 문제