首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >numpy genfromtxt列

numpy genfromtxt列
EN

Stack Overflow用户
提问于 2012-05-01 19:00:14
回答 1查看 3.9K关注 0票数 3

我遇到了一个看起来非常简单的关于numpy genfromtxt的问题。这是我的代码的(非常)简化版本:

代码语言:javascript
复制
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

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

代码语言:javascript
复制
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阅读上面的代码时,它给出了我所期望的两列数组:

代码语言:javascript
复制
>>> 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)运行时,它将返回单列字符串列:

代码语言:javascript
复制
[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)上运行。

任何感激不尽的想法。达里尔

EN

回答 1

Stack Overflow用户

发布于 2012-05-01 19:55:59

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

代码语言:javascript
复制
>>> 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]]

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

代码语言:javascript
复制
>>> 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有吗?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10396773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档