Added some new questions

This commit is contained in:
Nicolas Rougier
2015-02-26 18:24:23 +01:00
parent 10adfebcc3
commit ef0df80871

View File

@@ -528,6 +528,25 @@ Craftsman
Z = np.arange(20)
print moving_average(Z, n=3)
5. How to get the documentation of the numpy add function from the command line ?
.. code-block:: bash
python -c "import numpy; numpy.info(numpy.add)"
6. How to negate a boolean, or to change the sign of a float inplace ?
.. code-block:: python
# Author: Nathaniel J. Smith
Z = np.random.randint(0,2,100)
np.logical_not(arr, out=arr)
Z = np.random.uniform(-1.0,1.0,100)
np.negative(arr, out=arr)
7.
Artisan
=======
@@ -566,12 +585,12 @@ Artisan
.. code-block:: python
def distance(P0, P1, p):
T = P1 - P0
L = (T**2).sum(axis=1)
U = -((P0[:,0]-p[...,0])*T[:,0] + (P0[:,1]-p[...,1])*T[:,1]) / L
U = U.reshape(len(U),1)
D = P0 + U*T - p
return np.sqrt((D**2).sum(axis=1))
T = P1 - P0
L = (T**2).sum(axis=1)
U = -((P0[:,0]-p[...,0])*T[:,0] + (P0[:,1]-p[...,1])*T[:,1]) / L
U = U.reshape(len(U),1)
D = P0 + U*T - p
return np.sqrt((D**2).sum(axis=1))
P0 = np.random.uniform(-10,10,(10,2))
P1 = np.random.uniform(-10,10,(10,2))
@@ -579,7 +598,7 @@ Artisan
print distance(P0, P1, p)
4. Consider 2 sets of points P0,P1 describing lines (2d) and a set of point P,
4. Consider 2 sets of points P0,P1 describing lines (2d) and a set of points P,
how to compute distance from each point j (P[j]) to each line i (P0[i],P1[i]) ?
.. code-block:: python
@@ -727,6 +746,28 @@ Master
uZ = Z[idx]
print uZ
2. How to implement the Game of Life using numpy arrays ?
.. code-block:: python
# Author: Nicolas Rougier
def iterate(Z):
# Count neighbours
N = (Z[0:-2,0:-2] + Z[0:-2,1:-1] + Z[0:-2,2:] +
Z[1:-1,0:-2] + Z[1:-1,2:] +
Z[2: ,0:-2] + Z[2: ,1:-1] + Z[2: ,2:])
# Apply rules
birth = (N==3) & (Z[1:-1,1:-1]==0)
survive = ((N==2) | (N==3)) & (Z[1:-1,1:-1]==1)
Z[...] = 0
Z[1:-1,1:-1][birth | survive] = 1
return Z
Z = np.random.randint(0,2,(50,50))
for i in range(100): Z = iterate(Z)
Archmaster