|
634 | 634 | ]
|
635 | 635 | },
|
636 | 636 | {
|
637 |
| - "cell_type": "raw", |
| 637 | + "cell_type": "markdown", |
638 | 638 | "metadata": {
|
639 | 639 | "deletable": true,
|
640 | 640 | "editable": true
|
641 | 641 | },
|
642 | 642 | "source": [
|
| 643 | + "```python\n", |
643 | 644 | "def demean_axis(arr, axis=0):\n",
|
644 | 645 | " means = arr.mean(axis)\n",
|
645 | 646 | "\n",
|
646 | 647 | " # This generalizes things like [:, :, np.newaxis] to N dimensions\n",
|
647 | 648 | " indexer = [slice(None)] * arr.ndim\n",
|
648 | 649 | " indexer[axis] = np.newaxis\n",
|
649 |
| - " return arr - means[indexer]" |
| 650 | + " return arr - means[indexer]\n", |
| 651 | + "```" |
650 | 652 | ]
|
651 | 653 | },
|
652 | 654 | {
|
|
1342 | 1344 | ]
|
1343 | 1345 | },
|
1344 | 1346 | {
|
1345 |
| - "cell_type": "raw", |
| 1347 | + "cell_type": "markdown", |
1346 | 1348 | "metadata": {
|
1347 | 1349 | "deletable": true,
|
1348 | 1350 | "editable": true
|
1349 | 1351 | },
|
1350 | 1352 | "source": [
|
| 1353 | + "```python\n", |
1351 | 1354 | "In [209]: x = np.random.randn(10000000)\n",
|
1352 | 1355 | "\n",
|
1353 | 1356 | "In [210]: y = np.random.randn(10000000)\n",
|
|
1356 | 1359 | "1 loop, best of 3: 2 s per loop\n",
|
1357 | 1360 | "\n",
|
1358 | 1361 | "In [212]: %timeit (x - y).mean()\n",
|
1359 |
| - "100 loops, best of 3: 14.7 ms per loop" |
| 1362 | + "100 loops, best of 3: 14.7 ms per loop\n", |
| 1363 | + "```" |
1360 | 1364 | ]
|
1361 | 1365 | },
|
1362 | 1366 | {
|
1363 |
| - "cell_type": "raw", |
| 1367 | + "cell_type": "markdown", |
1364 | 1368 | "metadata": {
|
1365 | 1369 | "deletable": true,
|
1366 | 1370 | "editable": true
|
1367 | 1371 | },
|
1368 | 1372 | "source": [
|
| 1373 | + "```python\n", |
1369 | 1374 | "In [213]: import numba as nb\n",
|
1370 | 1375 | "\n",
|
1371 |
| - "In [214]: numba_mean_distance = nb.jit(mean_distance)" |
| 1376 | + "In [214]: numba_mean_distance = nb.jit(mean_distance)\n", |
| 1377 | + "```" |
1372 | 1378 | ]
|
1373 | 1379 | },
|
1374 | 1380 | {
|
1375 |
| - "cell_type": "raw", |
| 1381 | + "cell_type": "markdown", |
1376 | 1382 | "metadata": {
|
1377 | 1383 | "deletable": true,
|
1378 | 1384 | "editable": true
|
1379 | 1385 | },
|
1380 | 1386 | "source": [
|
| 1387 | + "```python\n", |
1381 | 1388 | "@nb.jit\n",
|
1382 | 1389 | "def mean_distance(x, y):\n",
|
1383 | 1390 | " nx = len(x)\n",
|
|
1386 | 1393 | " for i in range(nx):\n",
|
1387 | 1394 | " result += x[i] - y[i]\n",
|
1388 | 1395 | " count += 1\n",
|
1389 |
| - " return result / count" |
| 1396 | + " return result / count\n", |
| 1397 | + "```" |
1390 | 1398 | ]
|
1391 | 1399 | },
|
1392 | 1400 | {
|
1393 |
| - "cell_type": "raw", |
| 1401 | + "cell_type": "markdown", |
1394 | 1402 | "metadata": {
|
1395 | 1403 | "deletable": true,
|
1396 | 1404 | "editable": true
|
1397 | 1405 | },
|
1398 | 1406 | "source": [
|
| 1407 | + "```python\n", |
1399 | 1408 | "In [215]: %timeit numba_mean_distance(x, y)\n",
|
1400 |
| - "100 loops, best of 3: 10.3 ms per loop" |
| 1409 | + "100 loops, best of 3: 10.3 ms per loop\n", |
| 1410 | + "```" |
1401 | 1411 | ]
|
1402 | 1412 | },
|
1403 | 1413 | {
|
1404 |
| - "cell_type": "raw", |
| 1414 | + "cell_type": "markdown", |
1405 | 1415 | "metadata": {
|
1406 | 1416 | "deletable": true,
|
1407 | 1417 | "editable": true
|
1408 | 1418 | },
|
1409 | 1419 | "source": [
|
| 1420 | + "```python\n", |
1410 | 1421 | "from numba import float64, njit\n",
|
1411 | 1422 | "\n",
|
1412 | 1423 | "@njit(float64(float64[:], float64[:]))\n",
|
1413 | 1424 | "def mean_distance(x, y):\n",
|
1414 |
| - " return (x - y).mean()" |
| 1425 | + " return (x - y).mean()\n", |
| 1426 | + "```" |
1415 | 1427 | ]
|
1416 | 1428 | },
|
1417 | 1429 | {
|
|
1425 | 1437 | ]
|
1426 | 1438 | },
|
1427 | 1439 | {
|
1428 |
| - "cell_type": "raw", |
| 1440 | + "cell_type": "markdown", |
1429 | 1441 | "metadata": {
|
1430 | 1442 | "deletable": true,
|
1431 | 1443 | "editable": true
|
1432 | 1444 | },
|
1433 | 1445 | "source": [
|
| 1446 | + "```python\n", |
1434 | 1447 | "from numba import vectorize\n",
|
1435 | 1448 | "\n",
|
1436 | 1449 | "@vectorize\n",
|
1437 | 1450 | "def nb_add(x, y):\n",
|
1438 |
| - " return x + y" |
| 1451 | + " return x + y\n", |
| 1452 | + "```" |
1439 | 1453 | ]
|
1440 | 1454 | },
|
1441 | 1455 | {
|
1442 |
| - "cell_type": "raw", |
| 1456 | + "cell_type": "markdown", |
1443 | 1457 | "metadata": {
|
1444 | 1458 | "deletable": true,
|
1445 | 1459 | "editable": true
|
1446 | 1460 | },
|
1447 | 1461 | "source": [
|
| 1462 | + "```python\n", |
1448 | 1463 | "In [13]: x = np.arange(10)\n",
|
1449 | 1464 | "\n",
|
1450 | 1465 | "In [14]: nb_add(x, x)\n",
|
1451 | 1466 | "Out[14]: array([ 0., 2., 4., 6., 8., 10., 12., 14., 16., 18.])\n",
|
1452 | 1467 | "\n",
|
1453 | 1468 | "In [15]: nb_add.accumulate(x, 0)\n",
|
1454 |
| - "Out[15]: array([ 0., 1., 3., 6., 10., 15., 21., 28., 36., 45.])" |
| 1469 | + "Out[15]: array([ 0., 1., 3., 6., 10., 15., 21., 28., 36., 45.])\n", |
| 1470 | + "```" |
1455 | 1471 | ]
|
1456 | 1472 | },
|
1457 | 1473 | {
|
|
1678 | 1694 | "name": "python",
|
1679 | 1695 | "nbconvert_exporter": "python",
|
1680 | 1696 | "pygments_lexer": "ipython3",
|
1681 |
| - "version": "3.6.0" |
| 1697 | + "version": "3.5.1" |
1682 | 1698 | }
|
1683 | 1699 | },
|
1684 | 1700 | "nbformat": 4,
|
|
0 commit comments