2016-03-08 65 views
0

我有我有三列读取一个文件,该文件是这样的:连接三个numpy的阵列,并将它们写入文件

01 29 54.288 
01 48 23.384 
01 56 42.495 
.. .. ...... 

我需要这三个数字,做一些数学与第三列舍其关闭,以一个整数,然后将它们写入到一个新的文件,使他们看起来像这样:

01295 
01482 
01564 

简化代码:

import numpy as np 

data = np.loadtxt(filename,dtype=str) 

ra1 = data[:,1] 
ra2 = data[:,2] 
ra3 = data[:,3] 

# This part is because ra3 is in arcseconds, it's correct, just here for reference 
ra3 = ra3.astype(float) 
ra3n = ra3/60 * 10 
ra3n = np.rint(ra3n) 

ra = ra1+ra2+ra3n 

print ra 

产生了错误:

unsupported operand type(s) for +: 'numpy.ndarray' and 'numpy.ndarray' 

我也试图利用np.concatenate,但是这似乎并没有做我想做的,除非我使用它错了。任何建议将不胜感激。

+0

看看np.hstack()。 http://docs.scipy.org/doc/numpy-1.10.1/reference/generated/numpy.hstack.html –

回答

2

我的猜测是,您正尝试将所有阵列ra1,ra2ra3n串联起来。问题是你不能像numpy那样添加字符串。首先,你需要ra3n转换为字符串数组:

ra3n = ra3n.astype(str) 

然后,更好的办法是使用类似zip().join()来帮助你:

final_list = np.array(["".join(elem) for elem in zip(ra1, ra2, ra3n)]) 

然后您就可以正常情况下将final_list写入文件。

+0

工作就像一个魅力,你是一个传奇,队友。谢谢! – uhurulol

相关问题