Python旋转矩阵数组

2018-01-07  本文已影响1364人  狂奔的胖蜗牛

问题:

假设有一个3*3的二维数组,如下

[[1,2,3],
[4,5,6],
[7,8,9]]

现在,请你用最简单的方式顺时针翻转数组90°,使之成为如下

[[7,4,1],
[8,5,2],
[9,6,3]]

解法:

思路:很多朋友第一时间可能会想,翻转90°,就是坐标系变化了,只需要找出翻转后的坐标系和翻转前的规律,然后变换就可以了。是的,这是一种方法,但是,这绝对不是一个简便的方法。

我们先分析一下,翻转后的矩阵是怎么从翻转前矩阵得到的,仔细看一下,会发现,翻转后的矩阵数组,假设是list2,翻转前是list1,会发现,list2[0]是由list1中,每个元素内,的第一位拼接得到。我们很容易就想到一个系统自带函数zip()。

zip()用法:

a=[1,2,3]
b=[4,5,6]
c=zip(a,b) #c = [(1, 4), (2, 5), (3, 6)]

所以,现在旋转矩阵就变得容易了,我们可以利用zip函数快速的实现:

a=[[1,2,3],[4,5,6],[7,8,9]]
d=zip(a[2],a[1],a[0]) #[(7, 4, 1), (8, 5, 2), (9, 6, 3)]

通过上述方式,就能快速的获得顺时针旋转90°后的矩阵数组了。

上一篇 下一篇

猜你喜欢

热点阅读