我用随机数生成一个大矩阵(100x100,我们称之为X),用numpy.matrix公司()这样我就有了努比·恩达雷. 在
我一直在想这两种操作之间是否有区别:
我在1000范围内测量了每个操作的时间,似乎X.T明显快于纽比转置(十)
增加了基准:
对于一个100x100矩阵,我得到了以下结果:X.T和numpy.Transpose公司(十)
在10000范围循环中:
添加了下面的代码
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)
谨致问候 呼呼
使用Ipython
%timeit
魔力我得到:所以是的,
.T
最快,函数最慢。但是把这些时间和简单加法的时间比较一下或者复制品或切片
^{pr2}$所有形式的Transpose都返回一个新的数组对象,带有新的},但是有一个共享的数据缓冲区(查看
shape
和{.__array_interface__
字典可以看到这一点)。因此,它与返回view
的其他操作花费的时间差不多。但是没有一个转置函数复制或遍历数据。所以时间差只是因为打过头电话造成的。在再次使用
ipython
魔法所以
np.function(X)
最后调用了X.transpose()
。在我不得不看一下numpy代码,但我记得
.T
是作为attribute
实现的(与property
不完全相同)。我怀疑它更快,因为它不使用axes
参数,因此节省了一两个C
函数调用。在相关问题 更多 >
编程相关推荐