python從list列表中選出一個數和其對應的座標

例1:給一個列表如下,裏面每個元素對應的是x和y的值

a = [[5,2],[6,3],[8,8],[1,3]]

現在要挑出y的值爲3對應的x的值,即6和1

import numpy as np

a = [[5,2],[6,3],[8,8],[1,3]]  
#c=np.mat(a),因爲只有矩陣(也可以用array)才能用a[0,0]這樣的調用
#表示第一個數的用法而list沒有,故在最後append需要用到
#注意:array也沒有index這樣的用法(只有list有,此題a已經是list),
#使用index要改成list
c = np.mat(a)  
b = []
for i in range(len(a)):
    try:            #使用try...except...是因爲比如3不在第一個[5,2]中會報錯並終止運行
        b_index = a[i].index(3)     #使用index尋找3所在的索引值
    except:       
        pass     #pass表示如果報錯那麼跳過並繼續下一個
    else:     #如果沒有報錯則進行else內容
        b.append(c[i,0])
print(b)

#結果爲
[6,1]

例2:
已知一系列座標(x,y,z,h)分別對應橫座標縱座標z座標和高,現在要在x-y平面畫出h=0.00221圖(實際上就是等高線圖)
h保留5位小數。
在這裏插入圖片描述
上面只展示了一小部分數據
1,導入數據

import matplotlib.pyplot as plt
import numpy as np

data = np.loadtxt(r'/media/sf_Share/fisher_matrix/myLSPE/data/41+95+150/r_0.01/sigma_F_0.1/sigma_F=0.1/threefre.txt')

2,將第四列即h保留5位小數

for i in range(len(data)):
    data[i,3] = float('%.5f'%data[i,3])

3,將h=0.00211對應的x,y座標找到並保存到x_mat和y_mat中

x_mat = []
y_mat = []
for i in range(len(data)):
    try:
        data_index = list(data[i]).index(0.00211)
    except:
        pass
    else:
        x_mat.append(data[i,0])
        y_mat.append(data[i,1])

4,畫散點圖

plt.scatter(x_mat,y_mat)
plt.show()

結果如下:
在這裏插入圖片描述

完整代碼:

import matplotlib.pyplot as plt
import numpy as np

data = np.loadtxt(r'/media/sf_Share/fisher_matrix/myLSPE/data/41+95+150/r_0.01/sigma_F_0.1/sigma_F=0.1/threefre.txt')

for i in range(len(data)):
    data[i,3] = float('%.5f'%data[i,3])
    
#data_list = list(data)
x_mat = []
y_mat = []
for i in range(len(data)):
    try:
        data_index = list(data[i]).index(0.00211)
    except:
        pass
    else:
        x_mat.append(data[i,0])
        y_mat.append(data[i,1])

plt.scatter(x_mat,y_mat)
plt.show()

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章