我已經盡我所能,自己找到解決方案,但我只是沒有發現任何相關的東西。我有一些從.tbl文件中提取的numpy數組(這是我用atpy提取的一種天文表格格式)。每個數組中大約有25,000個數字,我將它們繪製爲matplotlib的散點圖。 y軸值直接來自陣列,x軸是兩個單獨陣列中值的簡單減法。如何切片不均勻的numpy數組?
這一切都很好,但我真正需要做的是提取落在特定範圍內的值(例如,我需要y值介於10和13之間,x值介於0和1)。而且,對於情節的工作,當然,這些價值觀都必須相互配合。下面是我得到了什麼:
import numpy as np
from numpy import ndarray
import matplotlib.pyplot as plt
import matplotlib
import atpy
twomass = atpy.Table()
twomass.read('/Raw_Data/IRSA_downloads/2MASS_GCbox1.tbl')
hmag = list([twomass['h_m']])
jmag = list([twomass['j_m']])
colorjh = list([j-h for j,h in zip(jmag, hmag)])
x = []
y = []
def list_maker():
for c,h in zip(colorjh, hmag):
if np.all(c) < 1 == True and np.all(c) > 0 == True and np.all(h) < 13 == True and np.all(h) > 10 == True:
x.append(c)
y.append(h)
list_maker()
plt.scatter(x, y, c='g', s=1, alpha=0.05)
plt.xlabel('Color(J-H)', fontsize=15) #adjust axis labels here
plt.ylabel('Magnitude (H)', fontsize=15)
plt.gca().invert_yaxis()
plt.legend(loc=2)
plt.title('CMD for Galactic Center (2MASS)', fontsize=20)
plt.grid(True)
plt.show()
我也試過這個方法用於切分數據,但沒有運氣:
colorjh = colorjh[colorjh<1]
colorjh = colorjh[colorjh>0]
我已經嘗試了很多不同的東西,包括試圖把這些數組放入列表中,以及用不等式格式化的許多不同的東西。在這個過程中,我可能離自己的答案越來越遠,但是這段代碼至少會打印整個分散的數據(它不能像我想要的那樣分割數據)。一些其他的迭代已經在我要查找的數字範圍附近打印空白圖。
我是新來的python和這個網站,所以請儘可能明確,你可以用任何提示等。如果它是超級jargony我可能無法很好地使用你的建議。感謝大家。
這就是它!哇,非常感謝。大的幫助。 – Teachey 2013-03-20 17:06:21