我有一个代码,需要在少量输入上执行一些操作,然后将结果返回到numpy数组中。问题是实际创建numpy数组所需的时间比操作本身要长得多。我的问题是,是否有可能以某种方式加快新数组的创建。
作为示例,请考虑以下内容:
def return_list(x1, x2, x3):
return [x1**2, x2**2, x3**2]
def return_array(x1, x2, x3):
return np.array([x1**2, x2**2, x3**2])
分析代码:
%prun for i in range(1000000): z = return_list(2, 3, 4)
%prun for i in range(1000000): z = return_array(2, 3, 4)
第一个在0.32秒内执行,第二个在1.23秒内执行。这告诉我,大部分时间都是列表到numpy数组的转换。有没有办法加快这个过程?我的返回数组总是很小,为1x3,但是我需要返回一个数组,而不是列表。