Я почти закончил эту программу, но я не могу получить результат, как я этого хочу. Вот код:Условные ширины столбцов и выравнивание с помощью savetxt
import numpy as np
filename = (raw_input("Which file are we loading? "))
header = input("How many header lines? ")
# Input variables for column numbers and limiting factors
pcol = input("What column number is parallax in? ")
vcol = input("What column number is Vmag (or other limiting mag) in? ")
pmcol = input("What column number does proper motion begin in (Mu/PA or MuRa MuDec format) ")
ra = input("What column number is RA1 in? (h m s format) ")
dec = input("What column number is Dec1 in? (d m s format) ")
maglim = input("What is your limiting (dimmest) magnitude? ")
parlim = input("What is your limiting (farthest) parallax? ")
# Read in entire file
data = np.loadtxt(filename,skiprows=header,dtype=str)
# Select correct columns
parallax_str = data[:,pcol-1]
ra1_str = data[:,(ra-1)]
ra2_str = data[:,(ra)]
ra3_str = data[:,(ra+1)]
dec1_str = data[:,(dec-1)]
dec2_str = data[:,(dec)]
dec3_str = data[:,(dec+1)]
vmag_str = data[:,vcol-1]
pm1_str = data[:,(pmcol-1)]
pm2_str = data[:,(pmcol)]
# Convert selected strings to floats
parallax = parallax_str.astype(float)
vmag = vmag_str.astype(float)
pm1 = pm1_str.astype(float)
pm2 = pm2_str.astype(float)
criteria = (parallax>=parlim) & (vmag<=maglim)
vmag = vmag[criteria]
parallax = parallax[criteria]
pm1 = pm1[criteria]
pm2 = pm2[criteria]
ra1_str = ra1_str[criteria]
ra2_str = ra2_str[criteria]
ra3_str = ra3_str[criteria]
dec1_str = dec1_str[criteria]
dec2_str = dec2_str[criteria]
dec3_str = dec3_str[criteria]
newlist = np.vstack((ra1_str,ra2_str,ra3_str,dec1_str,dec2_str,dec3_str,vmag,parallax,pm1,pm2))
newlist = newlist.T
np.savetxt('observe.list',newlist,fmt='%s')
Теперь, это дает мне файл, который выглядит следующим образом:
00 19 05.563 -09 57 53.47 9.92 47.43 -35.62 -301.99
00 24 25.933 -27 01 36.38 7.91 54.87 665.64 83.67
00 39 21.806 +21 15 01.71 5.87 90.42 -461.32 -370.02
00 45 04.894 +01 47 07.88 8.01 46.37 -49.08 -573.23
00 48 22.977 +05 16 50.21 5.72 134.14 757.11 -1141.33
00 51 21.754 +18 44 21.31 9.21 46.79 54.1 -267.14
Однако я хочу файл, который выглядит следующим образом:
00 19 05.563 -09 57 53.47 9.92 47.43 -35.62 -301.99
00 24 25.933 -27 01 36.38 7.91 54.87 665.64 83.67
00 39 21.806 +21 15 01.71 5.87 90.42 -461.32 -370.02
00 45 04.894 +01 47 07.88 8.01 46.37 -49.08 -573.23
00 48 22.977 +05 16 50.21 5.72 134.14 757.11 -1141.33
00 51 21.754 +18 44 21.31 9.21 46.79 54.10 -267.14
Такое что все правильно выровнено. Может ли кто-нибудь помочь мне найти эффективный способ сделать это?
Cheers.
Это, однако, позволило бы мне сделать только одну ширину столбца, верно? Кроме того, это не обязательно было бы правильно выровнено, не так ли? – uhurulol
Они будут выровнены по правому краю и заполнены нулями, если десятичные цифры будут разными. Таким образом, десятичные точки будут выровнены ниже друг друга, а цифры до десятичных точек будут как-то трепетать. – albert