更快的代码numpy

2024-03-29 13:06:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在用Matlab编写Python脚本。碰巧在Matlab中,代码运行得更快(比如10分钟更少),所以也许你可以帮我找出我做错了什么。我用Python运行了所有会话,发现最慢的是以下两个会话:

X = xi * math.cos(theta) + zi * (math.sin(theta))
Y = yi
Z = xi * ((-1) * math.sin(theta)) + zi * (math.cos(theta))

x2 = [a * b * c * X[i] / np.sqrt((a * c * Y[i])**2 + b**2 * (
    c**2 * (X[i])**2 + a**2 * (Z[i])**2)) for i in range(len(X))]
y2 = [a * b * c * Y[i] / np.sqrt((a * c * Y[i])**2 + b**2 * (
    c**2 * X[i]**2 + a**2 * Z[i]**2)) for i in range(len(X))]
zt = c**2 * (1 - (x2 / a)**2 - (y2 / b)**2)
i = 0
z2 = []
for i in range(len(Z)):
    z2.append((-1 if Z[i] < 0 else 1) * np.sqrt(zt[i]))
< >席、彝、子是100万余个元素

的浮标

谢谢


Tags: inforlennprangemathsqrtsin
1条回答
网友
1楼 · 发布于 2024-03-29 13:06:16

对于z2零件

In [1]: import numpy as np
In [2]: zz =np.array([1, 2, 3, -1, -2, -3, 0])
In [3]: aa = np.array([1, 2, 3, 4, 5, 6, 64])
In [4]: Z =np.array([1, 2, 3, -1, -2, -3, 0])
In [5]: zt = np.array([1, 2, 3, 4, 5, 6, 64])
In [6]: np.sign(Z) * np.sqrt(zt)
Out[7]: 
array([ 1., 1.41421356, 1.73205081, -2., -2.23606798, -2.44948974, 0. ])

相关问题 更多 >