arange: TypeError: 不支持的操作数类型 -: 'list' 和 'int' [英] arange: TypeError: unsupported operand type(s) for -: 'list' and 'int'

查看:61
本文介绍了arange: TypeError: 不支持的操作数类型 -: 'list' 和 'int'的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

 x = np.arange[[0,10,0.1,np.float]]类型错误:'builtin_function_or_method' 对象不可下标

这是我的代码:

将 numpy 导入为 np导入 matplotlib.pyplot 作为 pltresults = {} # 创建一个空字典f = 打开 (r'D:\Work\Thesis\TEST_figures\telemac_comparison_1', 'w')f.write('距离'+'自由表面')结果 = [[], []]x = np.arange([0,10,0.1,np.float])打印 x

正如你所看到的,它显然没有完成,但我现在想把这条线整理一下.

解决方案

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

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

演示:

<预><代码>>>>np.arange(0, 10, 0.1, np.float)数组([ 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)回溯(最近一次调用最后一次):文件<stdin>",第 1 行,在 <module> 中类型错误:不支持 - 的操作数类型:类型"和列表"

但是stopstartstep 值是记录的函数签名.

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

I am trying to write a very simple code which just returns an array of x from 0 to 10 in increments of 0.1, but keep getting error:

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

This is my code:

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 

As you can see its clearly not finished but I wanted to get this line sorted now.

解决方案

Don't pass in a list, pass in separate arguments:

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

Demo:

>>> 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])

Incidentally, the error message in your question title is caused when you pass in a list as the first argument, np.float as the second:

>>> 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'

but the stop, start and step values are separate parameters in the documented function signature.

Your traceback also differs from the code you actually published; that's using subscription syntax (indexing) on the function object, instead of trying to call it. Don't use np.arange[], it is a function object not a sequence.

这篇关于arange: TypeError: 不支持的操作数类型 -: 'list' 和 'int'的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆