In [2]:
import numpy as np
In [ ]:
# Operations between arrays and scalars
arr = np.array([[1.,2.,3.], [4.,5.,6.]])
print arr * arr
print arr - arr
print 1 / arr
print arr + arr
print arr ** 0.5
In [3]:
# Basic indexing and slicing
arr = np.arange(10)
print arr, arr[5:8]
arr[5:8]= 12
print arr, arr[5:8]
arr_slice = arr[5:8]
arr_slice[1] = 12345
print arr[1:6]
arr[:] = 64
print arr
print
arr2d = np.array([[1,2,3],[4,5,6],[7,8,9]])
print arr2d
print arr2d[2]
print arr2d[0][2], arr2d[0,2]
print arr2d[:2, 1:]
print arr2d[:, :1]
print
arr3d = np.array([[[1,2,3], [4,5,6]], [[7,8,9], [10,11,12]]])
print arr3d[0]
old_values = arr3d[0].copy()
arr3d[0] = 42
print arr3d[0]
print old_values
In [7]:
# Boolean indexing
# Selecting data from an array by boolean indexing always creates a copy of the data, even if the returned array is unchanged.
data = np.random.randn(7, 4)
print data
names = np.array(['Bob', 'Joe', 'Will', 'Bob', 'Will', 'Joe', 'Joe'])
print names
print names == 'Bob'
print data[names == 'Bob']
print data[names == 'Bob', 2:]
print data[names == 'Bob', 3]
print names != 'Bob'
print data[~(names == 'Bob')]
# The Python keywords and and or do not work with boolean arrays.
mask = (names == 'Bob') | (names == 'Will')
print mask
print data[mask]
data[data < 0] = 0
print data
data[names != 'Joe'] = 7
print data
In [23]:
# Fancy indexing
# Keep in mind that fancy indexing, unlike slicing, always copies the data into a new array.
arr = np.empty((8, 4))
print arr
for i in range(8):
arr[i] = i
print arr
print arr[[4, 3, 0, 6]]
print arr[[-3, -5, -7]]
arr = np.arange(32).reshape((8, 4))
print arr
print arr[[1, 5, 7, 2], [0, 3, 1, 2]]
print arr[[1, 5, 7, 2]]
print arr[[1, 5, 7, 2]][:, [0, 3, 1, 2]]
print arr[np.ix_([1, 5, 7, 2], [0, 3, 1, 2])]
In [33]:
# Transporting Arrays and Swapping Axes
arr = np.arange(15).reshape((3, 5))
print arr
arr = np.random.randn(6, 3)
print arr
print arr.T
print np.dot(arr.T, arr)
arr = np.arange(16).reshape((2, 2, 4))
print arr
print arr.transpose((1,0,2))
# swapaxes similarly returns a view on the data without making a copy.
print arr.swapaxes(1, 2)
In [5]:
# Universal Functions: Fast Element-wise Array Functions
# arr = np.arange(10)
# print np.sqrt(arr)
# print np.exp(arr)
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.animation as animation
fig = plt.figure()
axes1 = fig.add_subplot(111)
?axes1.plot
line, = axes1.plot(np.random.rand(10))
print type(axes1)
print type(line)