python小練習——(二)
阿新 • • 發佈:2018-12-26
話不多說,直接放程式碼:
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)
執行結果如下:
雖然很容易,但是小編還是會一步一個腳印的向大佬進發!