On 25/09/17 18:44, john polo wrote: > Python List, > > I am trying to make practice data for plotting purposes. I am using > Python 3.6. The instructions I have are > > import matplotlib.pyplot as plt > import math > import numpy as np > t = np.arange(0, 2.5, 0.1) > y1 = map(math.sin, math.pi*t)
If you use np.sin instead of math.sin, you don't have to use map: Most numpy functions operate elementwise on arrays (for example, you're multiplying math.pi with an array - something that wouldn't work with a list). Here's the numpy way of doing this: t = np.arange(0, 2.5, 0.1) y1 = np.sin(np.pi * t) Without using numpy at all, this might be t = [i * 0.1 for i in range(25)] y1 = [math.pi * a for a in t] > plt.plot(t,y1) > > However, at this point, I get a TypeError that says > > object of type 'map' has no len() > > In [6]: t > Out[6]: > 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]) > In [7]: y1 > Out[7]: <map at 0x6927128> > In [8]: math.pi*t > Out[8]: > array([ 0. , 0.31415927, 0.62831853, 0.9424778 , 1.25663706, > 1.57079633, 1.88495559, 2.19911486, 2.51327412, 2.82743339, > 3.14159265, 3.45575192, 3.76991118, 4.08407045, 4.39822972, > 4.71238898, 5.02654825, 5.34070751, 5.65486678, 5.96902604, > 6.28318531, 6.59734457, 6.91150384, 7.2256631 , 7.53982237]) > > At the start of creating y1, it appears there is an array to iterate > through for the math.sin function used in map(), but y1 doesn't appear > to be saving any values. I expected y1 to hold a math.sin() output for > each item in math.pi*t, but it appears to be empty. Am I > misunderstanding map()? Is there something else I should be doing > instead to populate y1? > > > John > -- https://mail.python.org/mailman/listinfo/python-list