【问题标题】:Binary .dat file Plotting Column Array values二进制 .dat 文件绘制列数组值
【发布时间】:2015-02-02 18:57:22
【问题描述】:

我已使用以下方法将数组导入到 IPython 笔记本中:

SDSS_local_AGN = np.fromfile('/Users/iMacHome/Downloads/SDSS_local_AGN_Spectra.dat', dtype=float)

数组的形式为:

 SPECOBJID_1         RA          DEC           SUBCLASS ...
 299528159882143744  146.29988   -0.12001413   AGN      ...
 299532283050747904  146.32957   -0.30622363   AGN      ...

基本上每一列都有一个标题,我现在需要绘制某些值。

作为一个例子,我想绘制 RA 与 DEC...我该怎么做呢?

也许:

axScatter.plot(SDSS_local_AGN[RA], SDSS_local_AGN[DEC])

【问题讨论】:

  • np.fromfile(file, dtype=float)(使用默认的sep='')读取浮点值的二进制文件。您的数组如何拥有包含整数 (SPECOBJID_1) 或字符串 (SUBCLASS) 的“列”?

标签: python arrays numpy matplotlib


【解决方案1】:

答案有误,见cmets

如果你想通过名称访问它们,你应该使用 pandas 而不是 numpy。在numpy中,需要按索引查找:

plt.scatter(SDSS_local_AGN[1], SDSS_local_AGN[2])

但在 pandas 中,它会很简单:

df = read_csv('myfile')
df.plot(kind='scatter', x='RA', y='DEC')

http://pandas.pydata.org/pandas-docs/version/0.15.0/visualization.html#scatter-plot

SDSS_local_AGN['RA'] 在 pandas 中是有效操作,但在 numpy 中无效。

PS,由于您在笔记本中工作,pandas DataFrames 将很好地呈现为 HTML 表格,使它们更具可读性。

【讨论】:

  • 更正:SDSS_local_AGN['RA'] is 在 numpy 中有效,如果 SDSS_local_AGN 是结构化数组(请参阅 docs.scipy.org/doc/numpy/user/basics.rec .html)。如果文件是具有问题中所示布局的文本文件,则可以将其读入结构化数组,例如SDSS_local_AGN = np.genfromtxt('filename.dat', names=True)。但是,它是二进制文件,所以np.genfromtxtpandas.read_csv 都不起作用。
  • 我没有意识到这一点,对不起。
  • 这个问题令人困惑(对我来说,无论如何)。我看不到使用np.fromfile(...) 读取的二进制数据如何具有问题中显示的“列”。
  • 我想知道 OP 是否使用了“genfromtxt”并发布了“fromfile”?
猜你喜欢
  • 2012-08-01
  • 1970-01-01
  • 2015-06-27
  • 1970-01-01
  • 1970-01-01
  • 2014-08-25
  • 2019-10-24
  • 2017-01-26
  • 2016-10-08
相关资源
最近更新 更多