Python:随机矩阵生成,reshape,转置,统计矩阵中某元素个数,计算矩阵间汉明距离
初学python,遇到了许多问题,在此记录,以便大家共同学习。
本文主要是python矩阵操作的一些基本问题,用到了包为numpy。
一、随机矩阵生成以及reshape、转置问题
python代码
[python]
import numpy as np
from numpy import random as rd
a = rd.randint(0,10,(5,5)) #生成一个尺寸为5*5,取值在0-10之间的随机矩阵
a1 = a.reshape(25,order='F')#25为reshape后的向量尺寸,order表示拉列向量的方式,‘F’表示按列拉
a2 = a.reshape(25,order='C')#‘C’表示按行,具体结果示例见下图
a3=a.T
print a
print a1
print a2
图中a1和a2分别是将矩阵a按列与按行拉成的向量,从输出的结果可以看出’order‘不同参数对应的排列方法。
图中a3为a的转置矩阵。
二、统计矩阵中某个元素的个数
python代码
[python]
b = a==3 #得到布尔矩阵b,a中等于5的地方为true,其他为false
z = a[b]
print z.size
print b
从运行结果,可以看出矩阵b的类型
三、计算矩阵间汉明距离
汉明距离定义:汉明距离是使用在数据传输差错控制编码里面的,汉明距离是一个概念,它表示两个(相同长度)字对应位不同的数量,我们以d(x,y)表示两个字x,y之间的汉明距离。对两个字符串进行异或运算,并统计结果为1的个数,那么这个数就是汉明距离。出处:汉明距离百度百科
python 代码
[python]
from numpy import random as rd
a = rd.randint(0,2,(5,5))#随机生成两个0、1矩阵
x = rd.randint(0,2,(5,5))
print a
print x
d=abs(a-x) #两个矩阵求差,并取绝对值
b = d==1 #统计差矩阵中值为1的部分,即统计两个矩阵值不同的数为汉明距离
c=d[b]
print 'the distance is ',c.size
运行结果,这两个矩阵汉明距离为11
申明
本文为本人原创,转载请注明出处!
参考文献
1、https://baike.baidu.com/item/%E6%B1%89%E6%98%8E%E8%B7%9D%E7%A6%BB/475174?fr=aladdin
2、
http://blog.csdn.net/Yan456jie/article/details/52096582