# Numpy Exercise 1

## Imports

``````

In [1]:

import numpy as np
%matplotlib inline
import matplotlib.pyplot as plt
import seaborn as sns

``````
``````

In [2]:

import antipackage
import github.ellisonbg.misc.vizarray as va

``````
``````

Using existing version:  github.ellisonbg.misc.vizarray

``````

## Checkerboard

Write a Python function that creates a square `(size,size)` 2d Numpy array with the values `0.0` and `1.0`:

• Your function should work for both odd and even `size`.
• The `0,0` element should be `1.0`.
• The `dtype` should be `float`.
``````

In [95]:

def checkerboard(size):
#Create a 2x2 diagonal array
x = np.diag((1.0, 1.0))
#If the size is even, the array is tiled
if size % 2 == 0:
checkers = np.tile(x, (size/2, size/2))
#If the size is odd, the array is tiled larger
else:
board = np.tile(x, ((size + 1)/2, (size + 1)/2))
#The extra row is removed, the matrix is transponsed, and the new extra row is removed
remove = np.delete(board, size, 0)
trans = np.transpose(remove)
checkers = np.delete(trans, size, 0)
return checkers

print checkerboard(4)

``````
``````

[[ 1.  0.  1.  0.]
[ 0.  1.  0.  1.]
[ 1.  0.  1.  0.]
[ 0.  1.  0.  1.]]

``````
``````

In [96]:

a = checkerboard(4)
assert a[0,0]==1.0
assert a.sum()==8.0
assert a.dtype==np.dtype(float)
assert np.all(a[0,0:5:2]==1.0)
assert np.all(a[1,0:5:2]==0.0)

b = checkerboard(5)
assert b[0,0]==1.0
assert b.sum()==13.0
assert np.all(b.ravel()[0:26:2]==1.0)
assert np.all(b.ravel()[1:25:2]==0.0)

``````

Use `vizarray` to visualize a checkerboard of `size=20` with a block size of `10px`.

``````

In [98]:

va.set_block_size(10)
va.enable()

checkerboard(20)

``````
``````

Out[98]:

table.blockgrid {border: none;} .blockgrid tr {border: none;} .blockgrid td {padding: 0px;} #blockse3962f46-4899-4e54-ad75-67f569f5e80f td {border: 1px solid white;}

``````
``````

In [99]:

assert True

``````

Use `vizarray` to visualize a checkerboard of `size=27` with a block size of `5px`.

``````

In [101]:

va.set_block_size(5)
checkerboard(27)

``````
``````

Out[101]:

table.blockgrid {border: none;} .blockgrid tr {border: none;} .blockgrid td {padding: 0px;} #blocks6bcfbfc3-9af4-42d1-a642-9a316b181364 td {border: 1px solid white;}

``````
``````

In [102]:

assert True

``````
``````

In [ ]:

``````