Vous pourriez utiliser np.roll()
qui effectue une permutation cyclique / un décalage cyclique, le long de l'axe (ou des axes) spécifié(s).
Si le décalage se fait uniquement sur l'axe 1, utilisez :
new_img = np.roll (img, split, axis=1)
donde split
est la valeur de col à laquelle votre image doit être divisée. L'effet de ce décalage cyclique est exactement comme si l'image avait été divisée au point spécifié sur l'axe, et que les deux parties de l'image résultantes avaient été échangées.
Puisque vous avez besoin de décaler le long de l'axe 1, et simultanément de découper le long de l'axe 0, ce serait :
new_img = np.roll (img[low:high,...], split, axis=[0,1])
donde low
y high
sont des limites de tranche appropriées le long de l'axe 0.
Si un changement peut se produire le long les deux axes simultanément (et il y a sur le tranchage), ce serait :
new_img = np.roll (img, [split_0, split_1], axis=[0,1])
donde split_0
est le point de séparation le long de l'axe0 et split_1
est le point de séparation le long de l'axe1
Nota: De manière assez surprenante, au lieu de renvoyer une vue, roll()
renvoie un copie Il n'y a donc pas d'avantage en termes de vitesse par rapport à l'empilage et à la concaténation.