话不多说,直接放代码:
import numpy as np
import math
#第一题,考虑一个数组z=[1,2,3,4,5,6,7,8,9,10,11,12,13,14],如何生成一个数组R=[[1,2,3,4],[2,3,4,5]...,[11,12,13,14]]
z=[1,2,3,4,5,6,7,8,9,10,11,12,13,14]
R=[]
for i in range(0,len(z)-3):
a=z[i:(i+4)]
R.append(a)
print(R)
#----------------------------------------------------------------------------------------------------------------
#第二题,计算矩阵的秩
a=[[1, 2, 3, 4],
[2, 3, 4, 5],
[3, 4, 5, 6],
[4, 5, 6, 7],
[5, 6, 7, 8]]
s=np.linalg.matrix_rank(a)
print("矩阵的秩为:%d"%s)
#----------------------------------------------------------------------------
#考虑p个n*n矩阵,和p个形状为(n,1)的向量,如何直接计算P个矩阵和向量间的乘积
p=int(input("请输入n*n矩阵的个数:"))
n=10
a=np.ones((p,n,n))#p为个数
b=np.ones((p,n,1))#n行1列
c=np.tensordot(a, b, axes=([0, 2], [0, 1]))
print(c)
#---------------------------------------------------------------------------
#第四题,计算任意两幅图之间的hamming距离和欧式距离
from math import sqrt
a=np.matrix([1,2,3])#矩阵,即二维数组
b=np.matrix([4,5,6])
c=sqrt((a-b)*((a-b).T))
print(c)#欧氏距离
#--------------------------
a=np.array([1,2,3])#表示多维数组
b=np.array([4,5,6])
c=sqrt(np.dot((a-b),(a-b).T))
print(c)
#---------hamming距离,两个图像经过多少次变换才相同的步骤----------------------
#方法一
def hamming_distance(s1, s2):
assert len(s1) == len(s2)#断言函数使s1和s2的长度相等
return sum(ch1 != ch2 for ch1, ch2 in zip(s1, s2))#zip函数将s1和s2打包成一个元组
print (hamming_distance("gdad","glas"))#哈明距离
#方法二
x=np.random.random(10)>0.5
y=np.random.random(10)>0.5
x=np.asarray(x,dtype=np.int32)#将列表转换为数组
y=np.asarray(y,dtype=np.int32)
d1=np.mean(x!=y)#记录x和y中不相等元素出现的次数
print(d1)
运行结果如下:
虽然很容易,但是小编还是会一步一个脚印的向大佬进发!