Python 命名三维阵列中的元素属性的更好方法?

Python 命名三维阵列中的元素属性的更好方法?,python,arrays,multidimensional-array,naming-conventions,readability,Python,Arrays,Multidimensional Array,Naming Conventions,Readability,我有“Ball”s,它有一些属性,比如“x”、“y”和“z”,它们在许多“步骤”上循环 我在做很多属性交互的数学运算,因此,为了使我的代码更易于读写,我将数组元素的位置命名为它们的物理位置: x = 0 y = 1 z = 2 有了这些,我可以这样写: for Step in xrange(steps): for Ball in xrange(balls) ball[Ball,**z**,Step] + ball[Ball,**velocity_z**,Step]*dt

我有“Ball”s,它有一些属性,比如“x”、“y”和“z”,它们在许多“步骤”上循环

我在做很多属性交互的数学运算,因此,为了使我的代码更易于读写,我将数组元素的位置命名为它们的物理位置:

x = 0
y = 1
z = 2
有了这些,我可以这样写:

for Step in xrange(steps):
    for Ball in xrange(balls)
        ball[Ball,**z**,Step] + ball[Ball,**velocity_z**,Step]*dt
与记住每个财产的位置相反:

for Step in xrange(steps):
    for Ball in xrange(balls)
        ball[Ball,**2**,Step] + ball[Ball,**2**,Step]*dt
这是我当前的属性列表:

x = 0
y = 1
z = 2    
vel_x = 3
vel_y = 4
vel_z = 5
acc_x = 6
acc_y = 7
acc_z = 8
mass = 9
radius = 10
w_x = 11
w_y = 12
w_z = 13
mag_w = 14
mag_vel = 15
mag_acc = 16
velh_x = 17
velh_y = 18
velh_z = 19
然后确定数组的第二维度大小为20。我喜欢这样使代码易于阅读和编写,我当然不想使用字典或任何效率极低的东西,因为我的程序需要像python一样运行,但我想知道是否有人有一个更优雅的解决方案,计算速度也一样快


谢谢。

在我的numpy数组中为元素位置设置常量似乎是直观读写代码的好方法。

使用常量已经足够优雅了。请尊重你的代码你的代码缓慢的部分将是所有球和所有步骤的循环。如果需要速度,请考虑使用NUMPY数组或熊猫数据FRAFRAMS。DataFrames还将允许您使用带标签的阵列,这似乎是您在这里试图实现的目标。但我相信,您所采取的方法可能会被一个命名的元组所取代。它支持带标签的层,并力求高效。它是由天文爱好者建造的,所以我确信它脑子里有计算能力。我会看看达斯克。谢谢@Pynchia我不尊重什么?@jme我在使用numpy数组。ball[ball,x,Step]是一个numpy 3D阵列。