那么,为什么NumPy的转置.T
速度比np.transpose()
?
b = np.arange(10)
#Transpose .T
t=b.reshape(2,5).T
#Transpose function
t = np.transpose(b.reshape(2,5))
#Transpose function without wrapper
t = b.reshape(2,5).transpose()
我timeit
在Jupyter中都做到了:
%timeit -n 1000 b.reshape(2,5).T
1000 loops, best of 3: 391 ns per loop
%timeit -n 1000 np.transpose(b.reshape(2,5))
1000 loops, best of 3: 600 ns per loop
%timeit -n 1000 b.reshape(2,5).transpose()
1000 loops, best of 3: 422 ns per loop
为了检查可扩展性,我做了一个更大的矩阵:
b = np.arange( 100000000)
%timeit -n 1000 b.reshape(10000,10000).T
1000 loops, best of 3: 390 ns per loop
%timeit -n 1000 np.transpose(b.reshape(10000,10000))
1000 loops, best of 3: 611 ns per loop
%timeit -n 1000 b.reshape(10000,10000).transpose()
1000 loops, best of 3: 435 ns per loop
在这两种情况下,该.T
方法的速度都比包装器快2倍,比使用包装器快.transpose()
一点?有没有一种用例会np.transpose
更好?
原因之一可能是内部np.transpose(a)
调用a.transpose()
,而a.transpose()
直接调用。在源代码中,您有:
def transpose(a, axes=None):
return _wrapfunc(a, 'transpose', axes)
哪里_wrapfunc
又只是:
def _wrapfunc(obj, method, *args, **kwds):
try:
return getattr(obj, method)(*args, **kwds)
except (AttributeError, TypeError):
return _wrapit(obj, method, *args, **kwds)
getattr(a, 'transpose')
在这种情况下,映射到。
_wrapfunc
许多模块级函数使用来访问方法,通常是ndarray
该类的方法或第一个arg的类。
(注意:.T
与相同.transpose()
,但如果数组的尺寸小于2,则返回该数组。)
本文向大家介绍用Android Studio3.0新功能加快构建速度,包括了用Android Studio3.0新功能加快构建速度的使用技巧和注意事项,需要的朋友参考一下 Android Studio3.0很多新的功能,他们可以直接加快Android Studio的构建速度从而加快开发效率,构建速度直接影响到开发效率,浪费时间即浪费生命,可以通过修改一些配置,优化下构建速度。 Android St
问题内容: 我在多个循环中多次使用numpy的where函数,但是它变得太慢了。有什么方法可以更快地执行此功能?我读到您应该尝试内联进行循环,并在for循环之前为函数创建局部变量,但是似乎没有什么可以提高速度的。在和有的具有形状。我用得到的瓶颈在哪里手柄,并且where在for循环是一个大的。 问题答案: 事实证明,在这种情况下,纯Python循环比NumPy索引(或对np.where的调用)要快
问题内容: 我在我的python程序中使用cython进行相关计算。我有两个音频数据集,我需要知道它们之间的时差。根据开始时间切割第二组,然后在第一组上滑动。有两个for循环:一个滑动集合,而内部循环则计算该点的相关性。此方法效果很好,并且足够准确。 问题在于,使用纯python会花费超过一分钟的时间。使用我的cython代码,大约需要17秒。这仍然太多了。您是否有任何提示可以加快此代码的速度:
问题内容: 我没有代码示例或任何内容,因为我不知道该怎么做,但是有人可以告诉我如何在一定时间内迅速延迟功能吗? 问题答案: 您可以使用GCD(在示例中,延迟10秒): 迅捷2 Swift 3和Swift 4
问题内容: 在应用程序的核心(用Python编写并使用NumPy编写)中,我需要旋转一个四阶张量。实际上,我需要多次旋转许多张量,这是我的瓶颈。我涉及八个嵌套循环的幼稚实现(如下)似乎很慢,但是我看不到利用NumPy矩阵运算并希望加快处理速度的方法。我有一种应该使用的感觉,但是我不知道如何使用。 数学上,旋转张量T’的元素由下式给出:T’ijkl = ∑ g ia g jb g kc g ld T
问题内容: 在HTTP协议中,您可以使用keep- alive在一个套接字中发送许多请求,然后立即接收来自服务器的响应,这样可以大大加快整个过程。有什么办法可以在python请求库中做到这一点吗?还是有其他方法可以使用请求库来加快速度呢? 问题答案: 就在这里。使用,默认情况下它将保持活动状态。 我想我应该举一个简单的例子: 您将注意到这些日志消息发生 如果您稍等片刻,然后重复上一次通话 请注意,