Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
412 views
in Technique[技术] by (71.8m points)

python - arange: TypeError: unsupported operand type(s) for -: 'list' and 'int'

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:WorkThesisTEST_figureselemac_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.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

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.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...