我正在生成一个大矩阵(100x100,我们称之为X),其中包含随机数字,使用numpy.matrix()使其成为numpy.ndarray。
我一直在想这两个操作之间是否有区别:
- numpy.transpose(X)
- X.T
我用1000的范围内循环测量了每个操作的时间,结果表明X.T比numpy.transpose(X)快得多。
添加基准测试:
对于一个100x100的矩阵,我通过X.T和numpy.tranpose(X)获得了以下结果:
在10,000范围内循环:
- 7421/10,000: X.T最快
- 1256/10,000: numpy.transpose(X)最快
- 1323/10,000: 相同的计算时间或差异太小无法确定
添加以下代码:
import numpy as np
import time
np_transpose_count = 0
T_transpose_count = 0
equal_count = 0
for i in range(10000):
Se = np.random.rand(100,100)
tic1 =time.clock()
ST_T = Se.T
toc1=time.clock()
tic2 =time.clock()
ST_np = np.transpose(Se)
toc2=time.clock()
if (toc1-tic1) < (toc2-tic2):
T_transpose_count+=1
elif (toc1-tic1) > (toc2-tic2):
np_transpose_count+=1
else:
equal_count+=1
print(T_transpose_count, np_transpose_count, equal_count)
敬祝商祺 Whir
np.transpose(X)
比x.T
慢了 120-130%。也许函数调用会有一些额外的开销(x.transpose()
是一个函数,而x.T
不是)。np.transpose()
是一个带有一些包装代码的 Python 函数,因此存在一些额外的开销。 - user20160