У меня есть «Ball», с некоторыми свойствами типа «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, но мне интересно, есть ли у кого-то более элегантное решение, которое будет столь же быстро вычислить.
спасибо.
Использование констант достаточно изящно. Пожалуйста, уважайте [PEP-8] (https://www.python.org/dev/peps/pep-0008/) в своем коде – Pynchia
Медленная часть вашего кода будет проходить по всем шарам и всем шагам. Если вам нужна скорость, рассмотрите возможность использования массивов numpy или pandas DataFrames. DataFrames дополнительно позволит вам работать с помеченными массивами, что, похоже, является тем, что вы пытаетесь выполнить здесь. Но, по моему мнению, подход, который вы приняли, в значительной степени может быть заменен именованным вертепом. – jme
Возможно, проверьте dask (http://dask.pydata.org/en/latest/). он поддерживает помеченные слои и стремится быть эффективным. он построен астронармиками, поэтому я уверен, что он имеет в виду расчет. – user1269942