小编Ant*_*nio的帖子

在Python中实现3D向量:numpy vs x,y,z字段

我正在用Python实现3D Vector类.我的向量有坐标x,y和z(所有浮点数),我需要决定如何存储这些信息.我在这里至少可以看到三个选项:

1)制作三个独立的浮点字段:self.x,self.y,self.z

class Vector:

  def __init__(self, x, y, z):
    self.x = x
    self.y = y
    self.z = z
Run Code Online (Sandbox Code Playgroud)

2)制作一个列表,比如说self.data,有三个元素.如果对象可以是常量,我也可以使用元组.

class Vector:

  def __init__(self, x, y, z):
    self.data = [x,y,z]
Run Code Online (Sandbox Code Playgroud)

3)制作一个numpy数组,比如self.data,有三个元素.

import numpy as np    

class Vector:

  def __init__(self, x, y, z):
    self.data = np.array([x,y,z])
Run Code Online (Sandbox Code Playgroud)

对于选项(2)和(3),我可以实现属性和设置器来访问单个坐标

@property
def x(self):
  return self.data[0]
Run Code Online (Sandbox Code Playgroud)

4)为什么不进行冗余?我可以同时拥有一个列表(或元组或numpy数组)和单独的字段x,y和z.

该类用于执行常见操作,例如向量添加,内积,叉积,旋转等.需要考虑这些操作的性能.

是否有我更喜欢的解决方案,为什么?

python arrays numpy class vector

6
推荐指数
1
解决办法
6345
查看次数

标签 统计

arrays ×1

class ×1

numpy ×1

python ×1

vector ×1