In [ ]:
import numpy
In [ ]:
data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')
data
In [ ]:
%whos
In [ ]:
print(data)
In [ ]:
print(type(data))
In [ ]:
print(data.dtype)
In [ ]:
print(data.shape)
In [ ]:
print('first value in data:', data[0, 0])
In [ ]:
small = data[:3, 36:]
small
In [ ]:
data[:3, 36:]
print('small is:')
print(small)
In [ ]:
doubledata = data * 2.0
In [ ]:
print('original:')
print(data[:3, 36:])
print('doubledata:')
print(doubledata[:3, 36:])
In [ ]:
tripledata = doubledata + data
In [ ]:
print('tripledata:')
print(tripledata[:3, 36:])
In [ ]:
numpy.mean(data)
In [ ]:
import time
print(time.ctime())
In [ ]:
time.
?time.strptime
In [ ]:
time.strftime?
In [ ]:
t1 = time.strptime("08/12/18 07:26:34 PM", '%m/%d/%y %H:%M:%S %p')
print(t1)
t2 = time.mktime(t1) # in seconds since 1970
print(t2/60/60/24) # printed: in hours since 1970
time.strftime('%Y-%m-%d', t1)
In [ ]:
data.any?
In [ ]:
numpy.mean?
In [ ]:
maxval, minval, stdval = numpy.max(data), numpy.min(data), numpy.std(data)
print('maximum inflammation:', maxval)
print('minimum inflammation:', minval)
print('standard deviation:', stdval)
In [ ]:
patient_0 = data[0, :] # 0 on the first axis, everything on the second
print('maximum inflammation for patient 0:', patient_0.max())
In [ ]:
type(patient_0)
In [ ]:
print('maximum inflammation for patient 2:', numpy.max(data[2, :]))
In [ ]:
print(numpy.mean(data, axis=0))
In [ ]:
print(numpy.mean(data, axis=0).shape)
In [ ]:
print(numpy.mean(data, axis=1))
In [ ]:
import matplotlib.pyplot
image = matplotlib.pyplot.imshow(data)
# % matplotlib inline
matplotlib.pyplot.show()
In [ ]:
ave_inflammation = numpy.mean(data, axis=0)
ave_plot = matplotlib.pyplot.plot(ave_inflammation)
matplotlib.pyplot.show()
In [ ]:
max_plot = matplotlib.pyplot.plot(numpy.max(data, axis=0))
matplotlib.pyplot.show()
In [ ]:
min_plot = matplotlib.pyplot.plot(numpy.min(data, axis=0))
matplotlib.pyplot.show()
In [ ]:
import numpy
import matplotlib.pyplot
data = numpy.loadtxt(fname='inflammation-01.csv', delimiter=',')
datamin = numpy.min(data)
datamax = numpy.max(data)
fig = matplotlib.pyplot.figure(figsize=(10.0, 3.0))
axes1 = fig.add_subplot(1, 3, 1) # add_subplot is a method for a Figure object
axes2 = fig.add_subplot(1, 3, 2)
axes3 = fig.add_subplot(1, 3, 3)
axes1.set_ylabel('average')
axes1.set_ylim(datamin, datamax+0.1)
axes1.plot(numpy.mean(data, axis=0))
axes2.set_ylabel('max')
axes2.set_ylim(datamin, datamax+0.1)
axes2.plot(numpy.max(data, axis=0))
axes3.set_ylabel('min')
axes3.set_ylim(datamin, datamax+0.1)
axes3.plot(numpy.min(data, axis=0), drawstyle='steps-mid')
fig.tight_layout()
matplotlib.pyplot.show()
In [ ]:
import numpy
A = numpy.array([[1,2,3], [4,5,6], [7, 8, 9]])
print('A = ')
print(A)
B = numpy.hstack([A, A])
print('B = ')
print(B)
C = numpy.vstack([A, A])
print('C = ')
print(C)
In [ ]:
first, second = 'Grace', 'Hopper'
third, fourth = second, first
print(third, fourth)
In [ ]:
element = 'oxygen'
print('first three characters:', element[0:3])
print('last three characters:', element[3:6])
In [ ]:
print(element[:4])
print(element[4:]); print(element[:])
In [ ]:
element[3:3]
In [ ]:
data[3:3, 4:4]
In [ ]:
data[3:3, :]
In [ ]:
word = 'lead'
for char in word:
print(char)
In [ ]:
length = 0
for vowel in 'aeiou':
length = length + 1
print('There are', length, 'vowels')
important: variables created inside the for loop still exist outside after the loop is finished
In [ ]:
print('The variable "vowel" still exists: equals', vowel)
In [ ]:
print(len('aeiou'))
In [ ]:
for i in range(1, 40):
print(i, end=" ")
In [ ]:
print(type(range(1,40)))
range(3,1000)
In [ ]:
for i in range(3, 15, 4):
print(i)
In [ ]:
print(5 ** 3)
In [ ]:
result = 1
for i in range(0, 3):
result = result * 5
print(result)
In [ ]:
newstring = ''
oldstring = 'Newton'
for char in oldstring:
newstring = char + newstring
print(newstring)
In [ ]:
odds = [1,3, 5, 7]
print('odds are:', odds)
print('first and last:', odds[0], odds[-1])
for number in odds:
print(number)
names = ['Newton', 'Darwing', 'Turing'] # typo in Darwin's name
print('names is originally:', names)
names[1] = 'Darwin' # correct the name
print('final value of names:', names)
In [ ]:
name = 'Darwin'
print("letter indexed 0:", name[0])
name[0] = 'd'
In [ ]:
name = "darwin"
name
In [ ]:
a = "Darwin"
b = a
print("b=",b)
b = "Turing" # does not change a, because a has immutable value
print("now b=",b,"\nand a=",a)
In [ ]:
a = [10,11]
b = a
print("b[1]=", b[1]) # changes the value that b binds to, so changes a too
b[1] = 22
print("b=", b, "\nand a=",a)
In [ ]:
import copy
a = [10,11]
b = copy.copy(a)
print("b[1]=", b[1]) # changes the value that b binds to, so changes a too
b[1] = 22
print("b=", b, "\nand a=",a)
A list of lists is not the same as an array
In [ ]:
x = [['pepper', 'zucchini', 'onion'],
['cabbage', 'lettuce', 'garlic'],
['apple', 'pear', 'banana']]
print(x)
print(x[0])
print(x[0][0])
print([x[0]])
deep copy versus simple copy
In [ ]:
a = [[10,11],[20,21]]
print(a)
b = copy.copy(a)
b[0][0] = 50
print("b=",b,"and a=",a)
b[0] = [8,9]
print("b=",b,"and a=",a)
b = copy.deepcopy(a)
print("now b is back to a: ",b)
b[0][0] = 8
print("b=",b,"and a=",a)
more on mutable versus immutable objects: functions can change mutable arguments in place. This is a huge deal!
In [ ]:
def add1_scalar(x):
"""adds 1 to scalar input"""
x += 1
print("after add1_scalar:",x)
def add1_array(x):
"""adds 1 to the first element of array input"""
x[0] += 1
print("after add1_array:",x)
a=5; print(a)
add1_scalar(a)
print("and now a =",a) # a was not modified because it is immutable
b=[5]; print(b)
add1_array(b)
print("and now b =",b) # b was modified in place because it is mutable: array
In [ ]:
add1_scalar?
functions can change mutable arguments in place:
In [ ]:
print('odds before:', odds)
odds.append(11)
print('odds after adding a value:', odds)
for R users, the following code does not do what you might think:
In [ ]:
odds = [odds, 11]
print('odds=',odds)
In [ ]:
odds = [1, 3, 5, 7, 11]
del odds[0]
print('odds after removing the first element:', odds)
odds.reverse()
print('odds after reversing:', odds)
a = odds.pop()
print('odds after popping last element:', odds)
print("this last element was",a)
In [ ]:
taxon = "Drosophila melanogaster"
genus = taxon[0:10]
print("genus:", genus)
species = taxon[11:]
print("species:", species)
gslist = taxon.split(' ')
print(gslist)
print("after splitting at each space: genus=",
gslist[0],", species=",gslist[1], sep="")
In [ ]:
print(taxon)
print(taxon.replace(' ','_'))
print(taxon) # has not changed
In [ ]:
mystring = "\t hello world\n \n"
mystring
In [ ]:
print('here is mystring: "' + mystring + '"')
print('here is mystring.strip(): "' + mystring.strip() + '"')
print('here is mystring.rstrip(): "' + mystring.rstrip() + '"') # tRailing only
" abc\n \n\t ".strip()
In [ ]:
chromosomes = ["X", "Y", "2", "3", "4"]
autosomes = chromosomes[2:5]
print("autosomes:", autosomes)
last = chromosomes[-1]
print("last:", last)
last = 21
print("last:", last)
chromosomes # "last" was a scalar: immutable, so modifying it does not modify "chromosomes"
In [ ]:
a = "Observation date: 02-Feb-2013"
b = [["fluorine", "F"], ["chlorine", "Cl"], ["bromine", "Br"], ["iodine", "I"], ["astatine", "At"]]
print(a[-4:])
print(b[-2:])
In [ ]:
months = ["jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"]
print("10:12 gives:", months[10:12])
print("10:len(months) gives:", months[10:len(months)])
print("10: gives", months[10:])
tuples are immutable , unlike lists. useful for
(60,40)
earlier(6.5,)
In [ ]:
left = 'L'
right = 'R'
temp = left
left = right
right = temp
print("left =",left,"and right =",right)
In [ ]:
left = 'L'
right = 'R'
(left, right) = (right, left)
print("left =",left,"and right =",right)
In [ ]:
left, right = right, left
print("now left =",left,"and right =",right)
In [ ]:
odds = [1, 3, 5, 7]
primes = odds
primes += [2]
print('primes:', primes)
print('odds:', odds)
use list
to copy (but not deep-copy):
In [ ]:
odds = [1, 3, 5, 7]
primes = list(odds)
primes += [11]
print('primes:', primes)
print('odds:', odds)
a = [[10,11],[20,21]]
b = list(a)
b[0][0] = 50
print("b=",b,"\na=",a)
In [ ]:
odds += [9,11]
print("add = concatenate for lists: odds =", odds)
In [ ]:
counts = [2, 4, 6, 8, 10]
repeats = counts * 2
print("multiply = repeat for lists:\n", repeats)
operator overloading: the same function does different things depending on its arguments.
here: +
and *
can do different things
In [ ]:
print(sorted(repeats)) # all integers
print(sorted([10,2.5,4])) # all numerical
print(sorted(["jan","feb","mar","dec"])) # all strings
print(sorted(["jan",20,1,"dec"])) # error
In [ ]:
[num+5 for num in counts]