我已经尽我所能,自己找到解决方案,但我只是没有发现任何相关的东西。我有一些从.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