我目前面临Python代码的性能问题,特别是执行速度问题.我已经发现了代码中的一个瓶颈,并正在寻求有关如何对其进行优化以获得更好性能的建议.
这是代码的简化版本:
import numpy as np
def merge_arrays(arr: list, new: list) -> list:
if len(arr) != len(new):
raise ValueError(f'Length of <inds> is {len(arr)} but length of <new> is {len(new)}')
else:
return transform_array(zip(arr, new), [])
def transform_array(arr: list, r: list):
for x in arr:
if isinstance(x, (list, tuple, np.ndarray)):
transform_array(x, r)
else:
r.append(x)
return r
COUNT = 100000
pips = [(np.arange(5), np.arange(5)) for _ in range(COUNT)]
b = [np.arange(50, 65) for _ in range(COUNT)]
ang = [np.arange(50, 55) for _ in range(COUNT)]
dist = [np.arange(50, 55) for _ in range(COUNT)]
result = [merge_arrays(y, [np.append(b[i][1:], [dist[i][p], ang[i][p]]) for p, i in enumerate(x)]) for x, y in pips]
当处理大型数据集时,特别是当输入列表包含大量元素时,就会出现这个问题.这会导致执行时间缓慢,这对于我的应用程序来说是不希望的.
我try 通过使用列表解析来优化代码并避免不必要的条件判断,但性能仍然不令人满意.
我正在寻找有关如何重构或优化此代码以提高其性能的建议,尤其是在瓶颈似乎所在的transform_Array函数中.
任何见解或替代方法都将不胜感激.谢谢!