美文网首页
python 数据长度对齐

python 数据长度对齐

作者: YuAllon | 来源:发表于2019-06-19 15:52 被阅读0次

写在前面的话:

最近导师让我统计一下对于一个AGN样本,它的WISE的颜色是如何分布的?为了获取一个AGN样本,我从SDSS天文数据网站下载了DR14释放的数据,其中被归类为QSO的源我当作一个AGN样本。如果单个源去WISE上面下载,用时角坐标或以度为单位的坐标都行。然而,如果想以列表的形式一次性下载多个源的WISE数据,必须采用以度为单位,列表格式也有特定的要求。而列表格式的特定要求直接反映在如何取数据的精度问题上。尝试了诸多方法后最终成功,现记录如下。

WISE格式解读:

以txt文档方法一次性输入多个源坐标,格式要求见下图:

Screen Shot 2019-06-19 at 14.19.15.png
前面6行是必须有的(自己杜撰的,但是输入格式必须有这6行),而且这6行的竖线|的间距是不可更改,所有的输入的数据还必须满足都在两个竖线|的间隔内(在轴向数字也不能与竖线|重叠),但是只要在两个竖线|内,数字精度(长度)为多少不做要求。
  1. 既然数据在轴向不能与竖线|重叠,首先要保证每一行数据(ra)首端必须有一个空格的缩进,那该如何保证每一行ra末端在第二个竖线|内,且dec数据也满足前面要求呢?
  2. 因为竖线|之间的间隔是不可变的,所以意味着两个竖线|之间容纳的数字个数是有一个上限的,即有一个\color{red}{最大值}。经验证,这个最大值为11。\color{blue}{所以只要每一行ra的长度为11}\color{blue}{再加两个空格符号}\color{blue}{再输入一个长度为11的dec数据}\color{blue}{即可满足WISE的要求}
  3. 如何保证ra,dec的数据长度呢?自然而然想到的便是\color{red}{数据精度}

数据精度:

要给出数据精度,首先想到的便是\color{red}{round()函数}\color{red}{字符串格式化}

round()函数:

语法(Syntax):

round(number, number of digits)
参数 含义
number 待round的数
number of difits 如果没有,对number四舍五入取整,如果有比如3,四舍五入取小数点后3位,后面有零(0)舍掉

第二个参数看起来有点晕,直接看例子:

#没有第二个参数,四舍五入取整
round(1.234)
1
#第二个参数为3,保留小数点后3位,而且四舍五入后第3位不是0
round(1.2355,3)
1.236
#rounded后,四舍五入后第3位是0,舍掉
round(1.23005,3)
1.23
#保留的小数点后的位数超出数字长度,则直接输入原number,后面不自动添0
round(1.23005,11)
1.23005

字符串格式化:

关于字符串格式化的介绍可以参考我这篇文章:字符串格式化

b = '%011.7f' % 1.35003
b
'001.3500300'
len(b)
11

可见,字符串格式化不仅可以满足长度为11,而且如果原数字长度小于11,还可以向前向后自动补零。

代码如下:

#这篇代码是针对利用WISE搜索目标源时,如何输出WISE要求的列表格式


#首先这些初步的数据源来自SDSS DR14 QSO,fits格式
from astropy.io import fits
#import pandas as pd

#读取头文件信息
hdulist = fits.open('/Users/huangyulong/Desktop/sdss_qso/DR14Q_v4_4.fits')
#数据在hdulit[1]中存放
data = hdulist[1].data

#提取出源的RA,DEC,和红移Z的信息
ra = data['RA']
dec = data['DEC']
z = data['Z']
#
file = open('ex211111.txt','w')
i = 0
while i < len(data):
    a = ra[I]
    b = dec[I]
    a1 = '%011.7f' % a
    b1 = '%011.7f' % b
    file.write(' ' + a1 + ' ' + b1 + '\n')
    i += 1
file.close()

结果:

Screen Shot 2019-06-19 at 15.51.13.png

最后的头文件是加上去的。完美在所有竖线|的下面!!!!
2019-06-19

相关文章

  • python 数据长度对齐

    写在前面的话: 最近导师让我统计一下对于一个AGN样本,它的WISE的颜色是如何分布的?为了获取一个AGN样本,我...

  • Python学习-格式化

    查看所有Python相关学习笔记 格式化学习 格式化 %数字代表长度,正数是右对齐,负数是左对齐%s -->str...

  • 字节对齐

    什么叫做字节对齐? 对齐跟数据在内存中的位置有关。如果一个变量的内存地址正好位于它长度的整数倍,他就被称做自然对齐...

  • 自学Python:Python ljust()方法

    Python ljust() 方法返回一个原字符串左对齐,并使用空格填充至指定长度的新字符串。如果指定的长度小于原...

  • AES

    AES算法中填充模式的区别 ZeroPadding,数据长度不对齐时使用0填充,否则不填充 PKCS7Paddin...

  • Python数据分析入门(五):Pandas的对齐运算

    是数据清洗的重要过程,可以按索引对齐进行运算,如果没对齐的位置则补NaN,最后也可以填充NaN Python爬虫、...

  • Java对象头

    java对象分为三个部分:对象头,实例数据区,对齐填充字节。 其中对象头又分:mark word,指针,数组长度(...

  • 第3章:内建数据结构、函数及文件

    python的常用数据结构:元组、列表、字典和集合 元组(tuple):固定长度、不可变的python序列 列表:...

  • ch03

    3 Python 的数据结构、函数和文件 3.1 数据结构和序列 元组 元组是一个固定长度,不可改变的Python...

  • c语言结构体对齐

    1.什么是字节对齐 结构体里面一般会按照某种规则去进行字节对齐默认规则如下:对齐是按照结构体中长度最长的变量来对齐...

网友评论

      本文标题:python 数据长度对齐

      本文链接:https://www.haomeiwen.com/subject/udahqctx.html