【发布时间】:2012-05-10 22:12:30
【问题描述】:
我遇到了一个看似简单的 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) 上运行。
感谢您的任何想法。 达里尔
【问题讨论】:
-
这看起来不像是一列字符串。事实上,它看起来与正确的输出几乎相同。
-
但是当我引用它时,即:a = spec_1[0:1] 它不返回任何值,我可以引用返回整行但不返回的行(即 a = spec[1])单个元素。
-
spec_1[1]应该返回整行,如果你想要单个元素,你可以使用spec_1[1,0]、spec_1[2,1]等。另外,如果你在test_read.py的末尾添加print spec_1.dtype, spec_1.shape什么你得到输出了吗?我得到float64 (14, 2)。
标签: python numpy genfromtxt