arange:TypeError:不支持的操作数类型 - :'list'和'int'

时间:2014-07-04 09:56:35

标签: python numpy

我正在尝试编写一个非常简单的代码,它只返回一个x从0到10的数组,增量为0.1,但不断出现错误:

    x = np.arange[[0,10,0.1,np.float]]
TypeError: 'builtin_function_or_method' object is not subscriptable

这是我的代码:

import numpy as np 
import matplotlib.pyplot as plt 

results = {} # creating an empty dictionary 

f = open (r'D:\Work\Thesis\TEST_figures\telemac_comparison_1', 'w')

f.write ('Distance'+'Free surface')

result = [[], []]
x = np.arange([0,10,0.1,np.float])
print x 

正如你所看到的那样,它显然没有完成,但我想现在对这一行进行排序。

2 个答案:

答案 0 :(得分:2)

不要传入列表,传入单独的参数

x = np.arange(0, 10, 0.1, np.float)

演示:

>>> np.arange(0, 10, 0.1, np.float)
array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ,
        1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7,  1.8,  1.9,  2. ,  2.1,
        2.2,  2.3,  2.4,  2.5,  2.6,  2.7,  2.8,  2.9,  3. ,  3.1,  3.2,
        3.3,  3.4,  3.5,  3.6,  3.7,  3.8,  3.9,  4. ,  4.1,  4.2,  4.3,
        4.4,  4.5,  4.6,  4.7,  4.8,  4.9,  5. ,  5.1,  5.2,  5.3,  5.4,
        5.5,  5.6,  5.7,  5.8,  5.9,  6. ,  6.1,  6.2,  6.3,  6.4,  6.5,
        6.6,  6.7,  6.8,  6.9,  7. ,  7.1,  7.2,  7.3,  7.4,  7.5,  7.6,
        7.7,  7.8,  7.9,  8. ,  8.1,  8.2,  8.3,  8.4,  8.5,  8.6,  8.7,
        8.8,  8.9,  9. ,  9.1,  9.2,  9.3,  9.4,  9.5,  9.6,  9.7,  9.8,
        9.9])

顺便提一句,当您将列表作为第一个参数np.float作为第二个参数传递时,会导致问题标题中出现错误消息:

>>> np.arange([0,10,0.1], np.float)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'type' and 'list'

stopstartstep值在documented function signature中是单独的参数。

您的追溯与您实际发布的代码不同;它在函数对象上使用订阅语法(索引),而不是尝试调用它。不要使用np.arange[],它是一个函数对象而不是序列。

答案 1 :(得分:0)

你似乎有两次尝试

  1. np.arange[[...]]尝试订阅(参见列表索引l[0]或按键d['key']进行字典访问),这没有任何意义 - arange是功能;以及

  2. np.arange([...])传递单个列表参数,而arange实际需要(最多)四个单独的参数

  3. 相反,您应该这样做:

    np.arange(*[...]) # unpack the list to separate arguments
    
    如果你想一次定义参数并重复使用它们,那么

    会很有用,或者:

    np.arange(...) # pass as separate arguments
    

    后者的演示:

    >>> x = np.arange(0, 10, 0.1, np.float)
    >>> x
    array([ 0. ,  0.1,  0.2,  0.3,  0.4,  0.5,  0.6,  0.7,  0.8,  0.9,  1. ,
            1.1,  1.2,  1.3,  1.4,  1.5,  1.6,  1.7,  1.8,  1.9,  2. ,  2.1,
            2.2,  2.3,  2.4,  2.5,  2.6,  2.7,  2.8,  2.9,  3. ,  3.1,  3.2,
            3.3,  3.4,  3.5,  3.6,  3.7,  3.8,  3.9,  4. ,  4.1,  4.2,  4.3,
            4.4,  4.5,  4.6,  4.7,  4.8,  4.9,  5. ,  5.1,  5.2,  5.3,  5.4,
            5.5,  5.6,  5.7,  5.8,  5.9,  6. ,  6.1,  6.2,  6.3,  6.4,  6.5,
            6.6,  6.7,  6.8,  6.9,  7. ,  7.1,  7.2,  7.3,  7.4,  7.5,  7.6,
            7.7,  7.8,  7.9,  8. ,  8.1,  8.2,  8.3,  8.4,  8.5,  8.6,  8.7,
            8.8,  8.9,  9. ,  9.1,  9.2,  9.3,  9.4,  9.5,  9.6,  9.7,  9.8,
            9.9])
    

    将来,在尝试使用函数时请考虑reading the documentation