我有一个数据文件,可能是一行或多行。我用numpy.loadtxt
读了它。这具有使我的单行数据成为标量的功能。这是有问题的,因为我想在读入后使用循环。请参阅下面的示例
$ cat file1
1
$ cat file2
1
2
$ python --version
Python 2.7.6
$ python
$ python temp.py
1.0
2.0
Traceback (most recent call last):
File "temp.py", line 9, in <module>
for x in data1:
TypeError: iteration over a 0-d array
代码
import numpy
data1=numpy.loadtxt ( 'file1', unpack=True )
data2=numpy.loadtxt ( 'file2', unpack=True )
for x in data2:
print x
for x in data1:
print x
我也尝试过相关问题的解决方案:numpy loadtxt single line/row as list但我不能让它工作
我添加了
data1 = data1 if usi.shape else [data1]
然而,
$ python temp.py
Traceback (most recent call last):
File "temp.py", line 7, in <module>
data1 = data1 if usi.shape else [data1]
NameError: name 'usi' is not defined
我也试过了import usi
,但是我的系统上没有安装它,对于这么简单的任务来说似乎有点过头了。
我做错了什么?我觉得解决方案很简单,但我找不到http://docs.scipy.org/doc/numpy/reference/generated/numpy.loadtxt.html
的提示答案 0 :(得分:7)
尝试:
data1=numpy.loadtxt ( 'file1', unpack=True, ndmin = 1)
答案 1 :(得分:2)
您可以致电np.atleast_1d
将其推广到0-d对象之外:
>>> np.loadtxt("file1.txt")
array(1.0)
>>> np.atleast_1d(np.loadtxt("file1.txt"))
array([ 1.])
你也可以安全地应用于第二个数组,因为它不会做任何事情:
>>> np.loadtxt("file2.txt")
array([ 2., 3.])
>>> np.atleast_1d(np.loadtxt("file2.txt"))
array([ 2., 3.])
另见np.atleast_2d
。