其他分享
首页 > 其他分享> > numpy genfromtxt列

numpy genfromtxt列

作者:互联网

我遇到了numpy genfromtxt似乎很愚蠢的简单问题.这是我的代码的(非常)简化版本:

import numpy as np

in_file_1 = raw_input ('enter name of template file to be scaled:\n')
spec_1 = np.genfromtxt(in_file_1, delimiter = [8,24], dtype =float)
print spec_1

我正在读取的文件非常简单,两列没有标题等:

6392.01   0.90286163
6392.05   0.88731778
6392.09   0.87789831
6392.13   0.87716535
6392.16   0.88523003
6392.20   0.90948176
6392.24   0.93056874
6392.28   0.95782283
6392.32   0.98056805
6392.36   0.99623797
6392.39   0.99458828
6392.43   0.9848269
6392.47   0.96011146
6392.51   0.92864767

当我在python命令行上使用genfromtxt阅读以上内容时,它给了我两列的数组:

>>> import numpy as np
>>> in_file_1 = raw_input ('enter name of template file to be scaled:\n')
enter name of template file to be scaledl_1714650_052_no_head.txt
>>> spec_1 = np.genfromtxt(in_file_1, delimiter = [8,24], dtype =float)
>>> spec_1
array([[  6.39201000e+03,   9.02861630e-01],
       [  6.39205000e+03,   8.87317780e-01],
       [  6.39209000e+03,   8.77898310e-01],
       [  6.39213000e+03,   8.77165350e-01],
       [  6.39216000e+03,   8.85230030e-01],
       [  6.39220000e+03,   9.09481760e-01],
       [  6.39224000e+03,   9.30568740e-01],
       [  6.39228000e+03,   9.57822830e-01],
       [  6.39232000e+03,   9.80568050e-01],
       [  6.39236000e+03,   9.96237970e-01],
       [  6.39239000e+03,   9.94588280e-01],
       [  6.39243000e+03,   9.84826900e-01],
       [  6.39247000e+03,   9.60111460e-01],
       [  6.39251000e+03,   9.28647670e-01]])
>>> 

但是,当我将其作为本文顶部的脚本(read_test.py)运行时,它将返回一串字符串:

[scrooge:Acc_cont_removal/All_stars/Test] darryl% python read_test.py 
enter name of template file to be scaled:
l_1714650_052_no_head.txt
[[  6.39201000e+03   9.02861630e-01]
 [  6.39205000e+03   8.87317780e-01]
 [  6.39209000e+03   8.77898310e-01]
 [  6.39213000e+03   8.77165350e-01]
 [  6.39216000e+03   8.85230030e-01]
 [  6.39220000e+03   9.09481760e-01]
 [  6.39224000e+03   9.30568740e-01]
 [  6.39228000e+03   9.57822830e-01]
 [  6.39232000e+03   9.80568050e-01]
 [  6.39236000e+03   9.96237970e-01]
 [  6.39239000e+03   9.94588280e-01]
 [  6.39243000e+03   9.84826900e-01]
 [  6.39247000e+03   9.60111460e-01]
 [  6.39251000e+03   9.28647670e-01]]
[scrooge:Acc_cont_removal/All_stars/Test] darryl% 

我已经尝试了各种配置的定界符等,但是我无法弄清楚正在发生什么,并且几天前这段代码运行良好.在python v2.7的OSX(Lion)上运行.

任何想法表示感谢.
达里尔

解决方法:

您得到的正是您应该得到的答案!

>>> numpy.genfromtxt('testfile', delimiter=[8,24], dtype = float)
array([[  6.39201000e+03,   9.02861630e-01],
       [  6.39205000e+03,   8.87317780e-01],
       [  6.39209000e+03,   8.77898310e-01],
       [  6.39213000e+03,   8.77165350e-01],
       [  6.39216000e+03,   8.85230030e-01],
       [  6.39220000e+03,   9.09481760e-01],
       [  6.39224000e+03,   9.30568740e-01],
       [  6.39228000e+03,   9.57822830e-01],
       [  6.39232000e+03,   9.80568050e-01],
       [  6.39236000e+03,   9.96237970e-01],
       [  6.39239000e+03,   9.94588280e-01],
       [  6.39243000e+03,   9.84826900e-01],
       [  6.39247000e+03,   9.60111460e-01],
       [  6.39251000e+03,   9.28647670e-01]])
>>> print _
[[  6.39201000e+03   9.02861630e-01]
 [  6.39205000e+03   8.87317780e-01]
 [  6.39209000e+03   8.77898310e-01]
 [  6.39213000e+03   8.77165350e-01]
 [  6.39216000e+03   8.85230030e-01]
 [  6.39220000e+03   9.09481760e-01]
 [  6.39224000e+03   9.30568740e-01]
 [  6.39228000e+03   9.57822830e-01]
 [  6.39232000e+03   9.80568050e-01]
 [  6.39236000e+03   9.96237970e-01]
 [  6.39239000e+03   9.94588280e-01]
 [  6.39243000e+03   9.84826900e-01]
 [  6.39247000e+03   9.60111460e-01]
 [  6.39251000e+03   9.28647670e-01]]

这只是打印和获取结果表示之间的区别.

>>> result = numpy.genfromtxt('testfile', delimiter=[8,24], dtype = float)
>>> repr(result)
'array([[  6.39201000e+03,   9.02861630e-01],\n       [  6.39205000e+03,   8.87317780e-01],\n       [  6.39209000e+03,   8.77898310e-01],\n       [  6.39213000e+03,   8.77165350e-01],\n       [  6.39216000e+03,
  8.85230030e-01],\n       [  6.39220000e+03,   9.09481760e-01],\n       [  6.39224000e+03,   9.30568740e-01],\n       [  6.39228000e+03,   9.57822830e-01],\n       [  6.39232000e+03,   9.80568050e-01],\n
[  6.39236000e+03,   9.96237970e-01],\n       [  6.39239000e+03,   9.94588280e-01],\n       [  6.39243000e+03,   9.84826900e-01],\n       [  6.39247000e+03,   9.60111460e-01],\n       [  6.39251000e+03,   9.2864
7670e-01]])'

>>> str(result)
'[[  6.39201000e+03   9.02861630e-01]\n [  6.39205000e+03   8.87317780e-01]\n [  6.39209000e+03   8.77898310e-01]\n [  6.39213000e+03   8.77165350e-01]\n [  6.39216000e+03   8.85230030e-01]\n [  6.39220000e+03
 9.09481760e-01]\n [  6.39224000e+03   9.30568740e-01]\n [  6.39228000e+03   9.57822830e-01]\n [  6.39232000e+03   9.80568050e-01]\n [  6.39236000e+03   9.96237970e-01]\n [  6.39239000e+03   9.94588280e-01]\n [
 6.39243000e+03   9.84826900e-01]\n [  6.39247000e+03   9.60111460e-01]\n [  6.39251000e+03   9.28647670e-01]]'

注意str版本没有逗号,而repr有吗?

标签:genfromtxt,python,numpy
来源: https://codeday.me/bug/20191101/1983218.html