0
這裏是我當前的代碼在Python中,如何創建沒有對角線的上對角線表格?
import numpy as np
with open("wine.txt","r") as f:
stuff=f.readlines()
z=[]
for hello in stuff:
firstbook=hello.strip().split(",")
x=[float(xy) for xy in firstbook]
z.append(x)
u=np.array(z)
gridList = []
for item in range(14):
row=[]
for nlist in u:
row.append(nlist[item])
gridList.append(row)
column=13
r=[]
while column >= 0:
recess=column-1
while recess >= 0:
r.append(np.corrcoef(gridList[recess],gridList[column]))
recess=recess - 1
column=column-1
print len(r),r[90][1][0],r[0][1][0]
print "column --> 1 2 3 4 5 6 7 8 9 10 11 12 13 14"
print 87*"-"
chucky=0
while chucky<1:
print "column=", chucky, "|",
princess = 90
while princess >=77:
print round((r[princess][1][0]),2),
princess-=1
chucky+=1
我辯論就是否做這個硬盤的方式,寫了一堆while循環,但我知道有一個更簡單的寫這個代碼的方式。我需要創建一個沒有對角線的上對角線表格,總共需要輸入91個值。正如您所看到的,我計算了數據列之間的皮爾遜r值並將其分配給r,我可以在其中通過簡單地爲每個矩陣打印 r[i][1][0] for i in range(90)
來檢索每個2×2矩陣的相關值。我知道爲對角線表寫一個上對角表的代碼應該不是問題,但是我遇到的問題與此類似,表的第一行應包含以下值:r [90] [1] [0] r [89] [1] [0] r [87] [1] [0] r [84] [1] [0] etc 。那麼我怎麼用循環來寫這些數值,從90開始,從增加正整數的速度減少到90?
讓我知道如果你想將數據與代碼玩
指數陣列用x [i,j,k]代替[i] [j] ...這樣更容易閱讀。還要確定陣列的形狀和dtype。 – hpaulj
看看np.tri ...函數族;和np.diag ... – hpaulj
謝謝,我會試試這些方法 – user5896534