Ric*_*cky 4 python numpy python-3.x
np.transpose的时间复杂度是多少?
在我看来,它在内部循环了两个for循环,这意味着它应该具有O(n2)复杂度,但有人可以对此进行确认吗?另外,有什么办法可以减少矩阵转置的时间复杂度
它是O(1),因为它根本不复制数据。只需修改形状并大步前进。
>>> A = np.random.rand(3,4)
>>> A.flags
C_CONTIGUOUS : True
F_CONTIGUOUS : False
OWNDATA : True
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False
>>> np.transpose(A).flags
C_CONTIGUOUS : False
F_CONTIGUOUS : True
OWNDATA : False
WRITEABLE : True
ALIGNED : True
WRITEBACKIFCOPY : False
UPDATEIFCOPY : False
Run Code Online (Sandbox Code Playgroud)
请注意C_CONTIGUOUS,F_CONTIGUOUS已交换,(即主要的迭代顺序更改),并且转置的数组具有OWNDATAfalse(即,它只是原始数组数据的视图)。
相关技巧:当您具有这样的视图时,要查找拥有数据的数组,您可以检查base属性
>>> np.transpose(A).base is A
True
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
126 次 |
| 最近记录: |