使用numpy.savetxt后出现问题

时间:2013-01-02 12:04:10

标签: numpy python-2.7

我正在用Python编程。 这是我的代码:

def data_exp(nr, nc):
    data=numpy.zeros((nr, nc))
    print data
    for i in range(0, nr):
        for j in range (0, nc):
            data[i, j]=input('Insert values: ')
    numpy.savetxt(str(input('Insert the name of the file (ex: "a.txt"): ')), data)
    return data

问题是这个程序什么都没有返回!我忽略了numpy.savetxt之后的所有内容!谁能告诉我如何克服这个问题?

1 个答案:

答案 0 :(得分:2)

您的问题是input的使用不当。 input相当于eval(raw_input())eval()调用将尝试在您的程序中的全局变量和本地变量的上下文中评估您输入的文本作为python源代码,在这种情况下显然不希望您这样做。我很惊讶您没有收到运行时错误报告您输入的字符串未定义。

请尝试使用raw_input

def data_exp(nr, nc):
    data=numpy.zeros((nr, nc))
    print data
    for i in range(0, nr):
        for j in range (0, nc):
            data[i, j]=input('Insert values: ')
    numpy.savetxt(str(raw_input('Insert the name of the file (ex: "a.txt"): ')), data)
    return data

编辑:

这是上面的代码,在ipython会话中为我工作。如果你不能让它工作,那么别的东西是错的:

In [7]: data_exp(2,2)
[[ 0.  0.]
 [ 0.  0.]]
Insert values: 1
Insert values: 2
Insert values: 3
Insert values: 4
Insert the name of the file (ex: "a.txt"): a.txt
Out[7]: 
array([[ 1.,  2.],
       [ 3.,  4.]])

In [8]: data_exp??
Type:       function
Base Class: <type 'function'>
String Form:    <function data_exp at 0x2ad3070>
Namespace:  Interactive
File:       /Users/talonmies/data_exp.py
Definition: data_exp(nr, nc)
Source:
def data_exp(nr, nc):
    data=numpy.zeros((nr, nc))
    print data
    for i in range(0, nr):
        for j in range (0, nc):
            data[i, j]=input('Insert values: ')
    numpy.savetxt(str(raw_input('Insert the name of the file (ex: "a.txt"): ')), data)
    return data

In [9]: _ip.system("cat a.txt")
1.000000000000000000e+00 2.000000000000000000e+00
3.000000000000000000e+00 4.000000000000000000e+00