【发布时间】:2021-01-18 15:45:28
【问题描述】:
我在这个 for 循环中有一个范围为 2000 的 for 循环,我必须创建一个名为 Array 的数组
在另外两个数组中,我们称它们为 ArrayOfPositionSatellite,大小为 (3,38),另一个数组名为 ArrayOfPositionMassPoint,大小为 (38, 3, 4412)。 Array 的大小为 (38,3,4412),PositonOfSatellite 和 PointsOfMassPoint 的大小为 (3, )。我尝试用 for 循环覆盖 ArrayOfMassPoint :
ArrayOfPositionSatellite= ArrayOfPositionSatellite.T
Array = ArrayOfPositionMassPoint
for i in range(38):
for k in range(4412):
PositionOfSatellite = ArrayOfPositionSatellite[:,i]
PositionOfMassPoint= ArrayOfPositionMassPoint[i,:,k]
ElementOfA = -Gravitationalconstant* (PositionOfSatellite - PositionOfMassPoint)/(np.linalg.norm( PositionOfSatellite - PositionOfMassPoint)**3)
Array[i,:,k] = ElementOfArray
问题
我的问题是运行代码大约需要 3 个小时,而且时间太长。有什么方法可以提高时间效率吗?
如果有不清楚的地方,请发表评论,我会补充更多细节。
【问题讨论】:
-
你能创建一个新数组而不是覆盖
Array中的元素吗?这可能会加快速度。 -
听起来很适合 numpy。
标签: python arrays for-loop optimization time