Elle est O(1), car elle ne copie pas du tout les données. Il modifie juste la forme et les enjambées.
>>> 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
Notez que C_CONTIGUOUS
, F_CONTIGUOUS
ont été échangés (c'est-à-dire des changements majeurs de l'ordre d'itération), et le tableau transposé a OWNDATA
faux (c'est-à-dire qu'il s'agit simplement d'un voir dans les données du tableau original).
Conseil connexe : Lorsque vous avez une vue comme celle-ci, pour trouver le tableau qui contient les données, vous pouvez vérifier la valeur de l'attribut base
attribut
>>> np.transpose(A).base is A
True