【发布时间】:2015-03-20 13:03:30
【问题描述】:
我在 2 个不同的 txt 文件中有数据,我需要来自这两个文件的数据(数据文件只有 630 行长,但我宁愿找到一种方法来读取同一行,而不是将相应的列复制并粘贴到一个文件中) .两个文件行数相同,顺序相同
这是我目前正在尝试使用的代码:
import numpy as np
class Source:
def __init__(self, ra, dec, dist, knAPPMag, SGRB, incl, fif_area):
self.ra = ra
self.dec = dec
self.dist = dist
self.knAPPMag = knAPPMag
self.SGRB = SGRB
self.incl = incl
self.fif_area = fif_area
def read_dat(data, data2):
sources = {}
count = 0
for line in data:
if line.startswith('#'):
continue
cols = line.split()
ra = float(cols[3])
dec = float(cols[4])
dist = (float(cols[8]))*10e6
incl = float(cols[5])
for line2 in data2:
if line2.startswith('#'):
continue
if line == line2:
cols2 = line2.split()
fif_area = float(cols2[8])
knABMag = np.random.uniform(-13, -16)
knAPPMag = 5*((np.log10(dist)) - 1 ) + knABMag
SGRB_iso = np.random.uniform(1e+49, 1e+53)
dist_m = dist*3.08567758e+16
SGRB = SGRB_iso/(dist_m**2)
name = 'src%05d' % count
sources[name] = Source(ra, dec, dist, knAPPMag, SGRB, incl, fif_area)
count=count+1
return (sources)
我想创建一个包含两个条目的字典,但是当我尝试时,我得到一个空字典(使用上面的代码) 我尝试过的其他事情是: 1)简单地在行循环之外运行 line2 循环,这让我有 630 个几乎空的字典,2)取出 line2 == 行循环我返回了 396900 个字典条目
我猜这个问题的解决方案并不太复杂,我只是对 python 比较陌生 干杯, 杰克
【问题讨论】:
-
你有一个问题和一个逻辑问题。问题是您提供与您的问题无关的代码。逻辑问题是如果
line==line2那么line2将不会有不在line中的列。顺便说一句,你可能想看看np.loadtxt。 -
感谢您的快速回复!我已经修好了,但可能是很长的路要走。只需创建一个单独的函数来读取该列并将其添加到另一个脚本中的字典
标签: python numpy dictionary readline