Как разделить список чисел в функции sine, чтобы отобразить его с помощью matplotlib в python?

#python

#python

Вопрос:

 i = range(0,40,1)
y = 0.1 * cos((i)/20 * pi)
  

Ошибка, которую я получаю, заключается в следующем:

 TypeError: unsupported operand type(s) for /: 'list' and 'int'`
  

Я не уверен, как удалить эту ошибку. Я ввел i в int, но это список, поэтому его нельзя ввести. Я следую этому примеру. http://msenux.redwoods.edu/math/python/simple.php

Комментарии:

1. хорошо насчет опечатки, но взгляните на мой ответ о import вещах.

Ответ №1:

Они используют pylab arange , а не простой python range . И это проблема, когда importing * : вы не знаете, какой метод откуда берется. Импортируйте только pylab и ссылайтесь на все его методы / константы с pylab. помощью . Вам действительно понравится этот способ программирования, когда у вас будет несколько импорта.

 import pylab
i = pylab.arange(0, 40, 1) # or pylab.arange(40) will suffice
y = 0.1 * pylab.cos(i / 20. * pylab.pi)
  

будет работать.

Комментарии:

1. Также вы захотите разделить на 20.0 (с плавающей точкой), или from __future__ import division , или использовать Python 3. В противном случае при делении int i/20 будут просто нули и единицы.

2. Почему именно это должны быть нули и единицы? Может кто-нибудь прояснить немного больше!

3. с i/20 помощью и Python 2.x у вас есть целочисленное деление, т.е. 5/20 = 0 , 21/20 = 1

4. Не было бы лучшей идеей использовать i % 20?

5. @Hiccup: % делает что- то совершенно другое . Я думаю, вам нужно разделение.

Ответ №2:

Возможно, вам следует выполнить цикл i , чтобы получить отдельные значения: range возвращает список.

 >>> for i in range(0, 40):
...     print cos((i)/20.0 * pi)
  

Или для получения значений:

 y = [cos((i)/20.0 * pi) for i in range(0, 40)]