python 实现 矩阵逆时针旋转

introduction:

this function  is just for the algorithm practice and improvement . if you want to operate the matrix , i suggest you take advantage of  scipy 

model  . it's more efficient and simple . 

background

记得大学学习线性代数课时,始终无法理解矩阵这玩意是什么东东,总觉得这东西不过是某些数学巨擘凭空设定的一些公理和定理,太抽象,在现实生活中完全找不到的一点感官的依据。对于矩阵性质和操作更多的是停留在记忆性的理解上面。难以有这刻骨铭心的触感。后来因为考研的原因,对线性代数重温的一篇,虽然记忆更加深刻了,但是感性认识依旧严重不足。


connection:

因为受编程思想的影响,开始有意识的将数学程序化,一快速解决研究过程中的一些问题。下面

# _*_ coding: utf-8 -*-
'''
name : matrix anti-clock 90 degree turn around
author : *****
date : 2013-10-19

matrix
1  2  3
4  5  6
7  8  9
reverse it  anti-clock 90
into
3  6  9
2  5  8
1  4  7

'''

上述问题是我在CSDN 上看到的一道算法题,我将其直接转述成头文件的模式加以阐述。

接触了数据结构之后,某种程度上知道了矩阵是可以用线性链表数组加以表示的。但是那仅仅是停留在一个理念上。而实际编程的过程中,使用C++来完成使用矩阵的旋转操作,那必然是异常艰难和痛苦。万恶而法力无边的指针让程序设计理念——程序实现之间形成了一条巨大的鸿沟。

python 无指针的特性,让编程有了耳目一新的感觉。

很显然python的多维数组和C++的数组表示方式是有差异的。

例如:在下面矩阵中:

1  2  3
4  5  6
7  8  9

Pyarray[2][1] =6

Carray[2][1]  =8


olist1=[1,4,7]
olist2=[2,5,8]
olist3=[3,6,9]

matrix_origin=[olist1,olist2,olist3 ]

def reversematrix(org_list):	# according the matrix line and squeue take a reverse
	'''Reversematrix(org_list)

	THIS function is for reverse the matrix to anti-clock 90  '''
	lenth=org_list.__len__()		#get the lenth of the list
	width=org_list[0].__len__() 	#get the width of the list
	new_matrix=list()				#create a new empty list

	for i in range(0,width):
		newline=[]	# empty the list
		for j in range(lenth-1,-1,-1):
			newline.append(org_list[j][i])
		new_matrix.append(newline) # add the new list into the target 2 dimension list
	return new_matrix


print reversematrix(matrix_origin)


python 数组的设计理念和线性代数上的列向量是非常相像。通过向量中嵌套向量的方式,我们可以得到一个矩阵。

当时我在想,如果在列向量中二次嵌套一个向量,那将得到一个每个元素均为向量的矩阵。

A00  A10  A20  A30
A01  A11  A21  A31
A02  A12  A22  A32
A03  A13  A23  A33
如果向量A [i][j] 中是一个仅包涵 三个元素的,每个元素的最大值为255,那么矩阵将可作为一个色素点分布矩阵。其本质已经就是图像的原始模型(具体没有考证)
如果矩阵是一个深度为4,三次嵌套的矩阵,其中最小列向量包涵4个数值,三个空间坐标值,X,Y,Z, 外加一个时间 T 值,通过矩阵的方式来表示四维空间,是不是更有表现力和依据感呢???

记得当年学习相对论时,始终难以接受如何在三维坐标系中如何再加一个时间坐标轴呢?在欧几里得的思维里面,时间似乎更像是一个死角。但是在矩阵的思维里面,一切都是可细分为最小单元的集合。思维方式的转变,让我们可以打开一扇新的窗户,看到一个不一样的世界。



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值