├── .ipynb_checkpoints
├── 1-Numpy基础-checkpoint.ipynb
├── 2-常用函数-checkpoint.ipynb
├── 3-便捷函数-checkpoint.ipynb
├── 4-深入学习Numpy模块-checkpoint.ipynb
└── 5-质量控制-checkpoint.ipynb
├── 1-Numpy基础.ipynb
├── 2-常用函数.ipynb
├── 3-便捷函数.ipynb
├── 4-深入学习Numpy模块.ipynb
├── 5-质量控制.ipynb
├── Python数据分析基础教程:NumPy学习指南(第2版).pdf
├── README.md
├── data.csv
└── eye.txt
/.ipynb_checkpoints/1-Numpy基础-checkpoint.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "##
Numpy基础"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "### 1 Numpy数组对象"
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 2,
20 | "metadata": {
21 | "collapsed": true
22 | },
23 | "outputs": [],
24 | "source": [
25 | "import numpy as np"
26 | ]
27 | },
28 | {
29 | "cell_type": "code",
30 | "execution_count": 3,
31 | "metadata": {
32 | "collapsed": true
33 | },
34 | "outputs": [],
35 | "source": [
36 | "a = np.arange(5)"
37 | ]
38 | },
39 | {
40 | "cell_type": "code",
41 | "execution_count": 4,
42 | "metadata": {},
43 | "outputs": [
44 | {
45 | "data": {
46 | "text/plain": [
47 | "array([0, 1, 2, 3, 4])"
48 | ]
49 | },
50 | "execution_count": 4,
51 | "metadata": {},
52 | "output_type": "execute_result"
53 | }
54 | ],
55 | "source": [
56 | "a"
57 | ]
58 | },
59 | {
60 | "cell_type": "code",
61 | "execution_count": 5,
62 | "metadata": {},
63 | "outputs": [
64 | {
65 | "data": {
66 | "text/plain": [
67 | "dtype('int64')"
68 | ]
69 | },
70 | "execution_count": 5,
71 | "metadata": {},
72 | "output_type": "execute_result"
73 | }
74 | ],
75 | "source": [
76 | "a.dtype"
77 | ]
78 | },
79 | {
80 | "cell_type": "code",
81 | "execution_count": 6,
82 | "metadata": {},
83 | "outputs": [
84 | {
85 | "data": {
86 | "text/plain": [
87 | "(5,)"
88 | ]
89 | },
90 | "execution_count": 6,
91 | "metadata": {},
92 | "output_type": "execute_result"
93 | }
94 | ],
95 | "source": [
96 | "a.shape"
97 | ]
98 | },
99 | {
100 | "cell_type": "markdown",
101 | "metadata": {},
102 | "source": [
103 | "### 2 创建多维数组"
104 | ]
105 | },
106 | {
107 | "cell_type": "code",
108 | "execution_count": 8,
109 | "metadata": {},
110 | "outputs": [],
111 | "source": [
112 | "m = np.array([np.arange(2),np.arange(2)])"
113 | ]
114 | },
115 | {
116 | "cell_type": "code",
117 | "execution_count": 9,
118 | "metadata": {},
119 | "outputs": [
120 | {
121 | "data": {
122 | "text/plain": [
123 | "array([[0, 1],\n",
124 | " [0, 1]])"
125 | ]
126 | },
127 | "execution_count": 9,
128 | "metadata": {},
129 | "output_type": "execute_result"
130 | }
131 | ],
132 | "source": [
133 | "m"
134 | ]
135 | },
136 | {
137 | "cell_type": "code",
138 | "execution_count": 10,
139 | "metadata": {},
140 | "outputs": [
141 | {
142 | "data": {
143 | "text/plain": [
144 | "(2, 2)"
145 | ]
146 | },
147 | "execution_count": 10,
148 | "metadata": {},
149 | "output_type": "execute_result"
150 | }
151 | ],
152 | "source": [
153 | "m.shape"
154 | ]
155 | },
156 | {
157 | "cell_type": "code",
158 | "execution_count": 11,
159 | "metadata": {},
160 | "outputs": [
161 | {
162 | "data": {
163 | "text/plain": [
164 | "0"
165 | ]
166 | },
167 | "execution_count": 11,
168 | "metadata": {},
169 | "output_type": "execute_result"
170 | }
171 | ],
172 | "source": [
173 | "m[0,0]"
174 | ]
175 | },
176 | {
177 | "cell_type": "markdown",
178 | "metadata": {},
179 | "source": [
180 | "每一种数据类型均有对应的类型转换函数,例如:"
181 | ]
182 | },
183 | {
184 | "cell_type": "code",
185 | "execution_count": 13,
186 | "metadata": {},
187 | "outputs": [
188 | {
189 | "data": {
190 | "text/plain": [
191 | "42.0"
192 | ]
193 | },
194 | "execution_count": 13,
195 | "metadata": {},
196 | "output_type": "execute_result"
197 | }
198 | ],
199 | "source": [
200 | "np.float64(42)"
201 | ]
202 | },
203 | {
204 | "cell_type": "markdown",
205 | "metadata": {},
206 | "source": [
207 | "### 3 数据类型对象"
208 | ]
209 | },
210 | {
211 | "cell_type": "markdown",
212 | "metadata": {},
213 | "source": [
214 | "Numpy数组中每个元素均为相同的数据类型"
215 | ]
216 | },
217 | {
218 | "cell_type": "code",
219 | "execution_count": 14,
220 | "metadata": {},
221 | "outputs": [
222 | {
223 | "data": {
224 | "text/plain": [
225 | "8"
226 | ]
227 | },
228 | "execution_count": 14,
229 | "metadata": {},
230 | "output_type": "execute_result"
231 | }
232 | ],
233 | "source": [
234 | "m.dtype.itemsize"
235 | ]
236 | },
237 | {
238 | "cell_type": "markdown",
239 | "metadata": {},
240 | "source": [
241 | "### 4 字符编码"
242 | ]
243 | },
244 | {
245 | "cell_type": "markdown",
246 | "metadata": {},
247 | "source": [
248 | "Numpy 可以使用字符编码来表示数据类型,例如f表示单精度浮点数"
249 | ]
250 | },
251 | {
252 | "cell_type": "code",
253 | "execution_count": 17,
254 | "metadata": {},
255 | "outputs": [
256 | {
257 | "data": {
258 | "text/plain": [
259 | "array([0., 1., 2., 3., 4., 5., 6.], dtype=float32)"
260 | ]
261 | },
262 | "execution_count": 17,
263 | "metadata": {},
264 | "output_type": "execute_result"
265 | }
266 | ],
267 | "source": [
268 | "np.arange(7,dtype='f')"
269 | ]
270 | },
271 | {
272 | "cell_type": "markdown",
273 | "metadata": {},
274 | "source": [
275 | "### 5 一维数组的索引和切片"
276 | ]
277 | },
278 | {
279 | "cell_type": "code",
280 | "execution_count": 20,
281 | "metadata": {
282 | "collapsed": true
283 | },
284 | "outputs": [],
285 | "source": [
286 | "a = np.arange(9)"
287 | ]
288 | },
289 | {
290 | "cell_type": "code",
291 | "execution_count": 21,
292 | "metadata": {},
293 | "outputs": [
294 | {
295 | "data": {
296 | "text/plain": [
297 | "array([0, 1, 2, 3, 4, 5, 6, 7, 8])"
298 | ]
299 | },
300 | "execution_count": 21,
301 | "metadata": {},
302 | "output_type": "execute_result"
303 | }
304 | ],
305 | "source": [
306 | "a"
307 | ]
308 | },
309 | {
310 | "cell_type": "code",
311 | "execution_count": 22,
312 | "metadata": {},
313 | "outputs": [
314 | {
315 | "data": {
316 | "text/plain": [
317 | "array([3, 4, 5, 6])"
318 | ]
319 | },
320 | "execution_count": 22,
321 | "metadata": {},
322 | "output_type": "execute_result"
323 | }
324 | ],
325 | "source": [
326 | "a[3:7]"
327 | ]
328 | },
329 | {
330 | "cell_type": "code",
331 | "execution_count": 23,
332 | "metadata": {},
333 | "outputs": [
334 | {
335 | "data": {
336 | "text/plain": [
337 | "array([8, 7, 6, 5, 4, 3, 2, 1, 0])"
338 | ]
339 | },
340 | "execution_count": 23,
341 | "metadata": {},
342 | "output_type": "execute_result"
343 | }
344 | ],
345 | "source": [
346 | "a[::-1]"
347 | ]
348 | },
349 | {
350 | "cell_type": "markdown",
351 | "metadata": {},
352 | "source": [
353 | "### 6 多维数组的索引和切片"
354 | ]
355 | },
356 | {
357 | "cell_type": "code",
358 | "execution_count": 24,
359 | "metadata": {
360 | "collapsed": true
361 | },
362 | "outputs": [],
363 | "source": [
364 | "b = np.arange(24).reshape(2,3,4)"
365 | ]
366 | },
367 | {
368 | "cell_type": "code",
369 | "execution_count": 25,
370 | "metadata": {},
371 | "outputs": [
372 | {
373 | "data": {
374 | "text/plain": [
375 | "array([[[ 0, 1, 2, 3],\n",
376 | " [ 4, 5, 6, 7],\n",
377 | " [ 8, 9, 10, 11]],\n",
378 | "\n",
379 | " [[12, 13, 14, 15],\n",
380 | " [16, 17, 18, 19],\n",
381 | " [20, 21, 22, 23]]])"
382 | ]
383 | },
384 | "execution_count": 25,
385 | "metadata": {},
386 | "output_type": "execute_result"
387 | }
388 | ],
389 | "source": [
390 | "b"
391 | ]
392 | },
393 | {
394 | "cell_type": "code",
395 | "execution_count": 26,
396 | "metadata": {},
397 | "outputs": [
398 | {
399 | "data": {
400 | "text/plain": [
401 | "0"
402 | ]
403 | },
404 | "execution_count": 26,
405 | "metadata": {},
406 | "output_type": "execute_result"
407 | }
408 | ],
409 | "source": [
410 | "b[0,0,0]"
411 | ]
412 | },
413 | {
414 | "cell_type": "code",
415 | "execution_count": 28,
416 | "metadata": {},
417 | "outputs": [
418 | {
419 | "data": {
420 | "text/plain": [
421 | "array([ 0, 12])"
422 | ]
423 | },
424 | "execution_count": 28,
425 | "metadata": {},
426 | "output_type": "execute_result"
427 | }
428 | ],
429 | "source": [
430 | "b[:,0,0]"
431 | ]
432 | },
433 | {
434 | "cell_type": "code",
435 | "execution_count": 29,
436 | "metadata": {},
437 | "outputs": [
438 | {
439 | "data": {
440 | "text/plain": [
441 | "array([[[ 0, 1, 2, 3],\n",
442 | " [ 4, 5, 6, 7],\n",
443 | " [ 8, 9, 10, 11]],\n",
444 | "\n",
445 | " [[12, 13, 14, 15],\n",
446 | " [16, 17, 18, 19],\n",
447 | " [20, 21, 22, 23]]])"
448 | ]
449 | },
450 | "execution_count": 29,
451 | "metadata": {},
452 | "output_type": "execute_result"
453 | }
454 | ],
455 | "source": [
456 | "b[:,...]"
457 | ]
458 | },
459 | {
460 | "cell_type": "markdown",
461 | "metadata": {},
462 | "source": [
463 | "### 7 改变数组的维度"
464 | ]
465 | },
466 | {
467 | "cell_type": "code",
468 | "execution_count": 30,
469 | "metadata": {},
470 | "outputs": [
471 | {
472 | "data": {
473 | "text/plain": [
474 | "array([[[ 0, 1, 2, 3],\n",
475 | " [ 4, 5, 6, 7],\n",
476 | " [ 8, 9, 10, 11]],\n",
477 | "\n",
478 | " [[12, 13, 14, 15],\n",
479 | " [16, 17, 18, 19],\n",
480 | " [20, 21, 22, 23]]])"
481 | ]
482 | },
483 | "execution_count": 30,
484 | "metadata": {},
485 | "output_type": "execute_result"
486 | }
487 | ],
488 | "source": [
489 | "b"
490 | ]
491 | },
492 | {
493 | "cell_type": "code",
494 | "execution_count": 31,
495 | "metadata": {},
496 | "outputs": [
497 | {
498 | "data": {
499 | "text/plain": [
500 | "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n",
501 | " 17, 18, 19, 20, 21, 22, 23])"
502 | ]
503 | },
504 | "execution_count": 31,
505 | "metadata": {},
506 | "output_type": "execute_result"
507 | }
508 | ],
509 | "source": [
510 | "b.ravel()"
511 | ]
512 | },
513 | {
514 | "cell_type": "code",
515 | "execution_count": 32,
516 | "metadata": {},
517 | "outputs": [
518 | {
519 | "data": {
520 | "text/plain": [
521 | "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n",
522 | " 17, 18, 19, 20, 21, 22, 23])"
523 | ]
524 | },
525 | "execution_count": 32,
526 | "metadata": {},
527 | "output_type": "execute_result"
528 | }
529 | ],
530 | "source": [
531 | "b.flatten()"
532 | ]
533 | },
534 | {
535 | "cell_type": "code",
536 | "execution_count": 33,
537 | "metadata": {},
538 | "outputs": [
539 | {
540 | "data": {
541 | "text/plain": [
542 | "(2, 3, 4)"
543 | ]
544 | },
545 | "execution_count": 33,
546 | "metadata": {},
547 | "output_type": "execute_result"
548 | }
549 | ],
550 | "source": [
551 | "b.shape"
552 | ]
553 | },
554 | {
555 | "cell_type": "code",
556 | "execution_count": 34,
557 | "metadata": {},
558 | "outputs": [
559 | {
560 | "data": {
561 | "text/plain": [
562 | "array([[[ 0, 1, 2, 3],\n",
563 | " [ 4, 5, 6, 7],\n",
564 | " [ 8, 9, 10, 11]],\n",
565 | "\n",
566 | " [[12, 13, 14, 15],\n",
567 | " [16, 17, 18, 19],\n",
568 | " [20, 21, 22, 23]]])"
569 | ]
570 | },
571 | "execution_count": 34,
572 | "metadata": {},
573 | "output_type": "execute_result"
574 | }
575 | ],
576 | "source": [
577 | "b"
578 | ]
579 | },
580 | {
581 | "cell_type": "code",
582 | "execution_count": 35,
583 | "metadata": {},
584 | "outputs": [
585 | {
586 | "data": {
587 | "text/plain": [
588 | "array([[[ 0, 12],\n",
589 | " [ 4, 16],\n",
590 | " [ 8, 20]],\n",
591 | "\n",
592 | " [[ 1, 13],\n",
593 | " [ 5, 17],\n",
594 | " [ 9, 21]],\n",
595 | "\n",
596 | " [[ 2, 14],\n",
597 | " [ 6, 18],\n",
598 | " [10, 22]],\n",
599 | "\n",
600 | " [[ 3, 15],\n",
601 | " [ 7, 19],\n",
602 | " [11, 23]]])"
603 | ]
604 | },
605 | "execution_count": 35,
606 | "metadata": {},
607 | "output_type": "execute_result"
608 | }
609 | ],
610 | "source": [
611 | "b.transpose()"
612 | ]
613 | },
614 | {
615 | "cell_type": "markdown",
616 | "metadata": {},
617 | "source": [
618 | "resize 会直接修改数组,而其他的操作会不会受到影响"
619 | ]
620 | },
621 | {
622 | "cell_type": "code",
623 | "execution_count": 36,
624 | "metadata": {
625 | "collapsed": true
626 | },
627 | "outputs": [],
628 | "source": [
629 | "b.resize((2,12))"
630 | ]
631 | },
632 | {
633 | "cell_type": "code",
634 | "execution_count": 37,
635 | "metadata": {},
636 | "outputs": [
637 | {
638 | "data": {
639 | "text/plain": [
640 | "array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],\n",
641 | " [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]])"
642 | ]
643 | },
644 | "execution_count": 37,
645 | "metadata": {},
646 | "output_type": "execute_result"
647 | }
648 | ],
649 | "source": [
650 | "b"
651 | ]
652 | },
653 | {
654 | "cell_type": "markdown",
655 | "metadata": {},
656 | "source": [
657 | "### 8 数组组合"
658 | ]
659 | },
660 | {
661 | "cell_type": "markdown",
662 | "metadata": {},
663 | "source": [
664 | "Numpy 数组组合有水平组合,垂直组合和深度组合等多种组合方式,我们将使用vstack,dstack,hstack,column_stack,row_stack以及concatenate函数来完成数组的组合"
665 | ]
666 | },
667 | {
668 | "cell_type": "code",
669 | "execution_count": 38,
670 | "metadata": {
671 | "collapsed": true
672 | },
673 | "outputs": [],
674 | "source": [
675 | "a = np.arange(9).reshape(3,3)"
676 | ]
677 | },
678 | {
679 | "cell_type": "code",
680 | "execution_count": 39,
681 | "metadata": {
682 | "collapsed": true
683 | },
684 | "outputs": [],
685 | "source": [
686 | "b = 2*a"
687 | ]
688 | },
689 | {
690 | "cell_type": "code",
691 | "execution_count": 40,
692 | "metadata": {},
693 | "outputs": [
694 | {
695 | "data": {
696 | "text/plain": [
697 | "array([[0, 1, 2],\n",
698 | " [3, 4, 5],\n",
699 | " [6, 7, 8]])"
700 | ]
701 | },
702 | "execution_count": 40,
703 | "metadata": {},
704 | "output_type": "execute_result"
705 | }
706 | ],
707 | "source": [
708 | "a"
709 | ]
710 | },
711 | {
712 | "cell_type": "code",
713 | "execution_count": 41,
714 | "metadata": {},
715 | "outputs": [
716 | {
717 | "data": {
718 | "text/plain": [
719 | "array([[ 0, 2, 4],\n",
720 | " [ 6, 8, 10],\n",
721 | " [12, 14, 16]])"
722 | ]
723 | },
724 | "execution_count": 41,
725 | "metadata": {},
726 | "output_type": "execute_result"
727 | }
728 | ],
729 | "source": [
730 | "b"
731 | ]
732 | },
733 | {
734 | "cell_type": "code",
735 | "execution_count": 43,
736 | "metadata": {},
737 | "outputs": [
738 | {
739 | "data": {
740 | "text/plain": [
741 | "array([[ 0, 1, 2, 0, 2, 4],\n",
742 | " [ 3, 4, 5, 6, 8, 10],\n",
743 | " [ 6, 7, 8, 12, 14, 16]])"
744 | ]
745 | },
746 | "execution_count": 43,
747 | "metadata": {},
748 | "output_type": "execute_result"
749 | }
750 | ],
751 | "source": [
752 | "np.hstack((a,b))"
753 | ]
754 | },
755 | {
756 | "cell_type": "code",
757 | "execution_count": 44,
758 | "metadata": {},
759 | "outputs": [
760 | {
761 | "data": {
762 | "text/plain": [
763 | "array([[ 0, 1, 2, 0, 2, 4],\n",
764 | " [ 3, 4, 5, 6, 8, 10],\n",
765 | " [ 6, 7, 8, 12, 14, 16]])"
766 | ]
767 | },
768 | "execution_count": 44,
769 | "metadata": {},
770 | "output_type": "execute_result"
771 | }
772 | ],
773 | "source": [
774 | "np.concatenate((a,b),axis=1)"
775 | ]
776 | },
777 | {
778 | "cell_type": "code",
779 | "execution_count": 45,
780 | "metadata": {},
781 | "outputs": [
782 | {
783 | "data": {
784 | "text/plain": [
785 | "array([[ 0, 1, 2],\n",
786 | " [ 3, 4, 5],\n",
787 | " [ 6, 7, 8],\n",
788 | " [ 0, 2, 4],\n",
789 | " [ 6, 8, 10],\n",
790 | " [12, 14, 16]])"
791 | ]
792 | },
793 | "execution_count": 45,
794 | "metadata": {},
795 | "output_type": "execute_result"
796 | }
797 | ],
798 | "source": [
799 | "np.vstack((a,b))"
800 | ]
801 | },
802 | {
803 | "cell_type": "code",
804 | "execution_count": 46,
805 | "metadata": {},
806 | "outputs": [
807 | {
808 | "data": {
809 | "text/plain": [
810 | "array([[ 0, 1, 2],\n",
811 | " [ 3, 4, 5],\n",
812 | " [ 6, 7, 8],\n",
813 | " [ 0, 2, 4],\n",
814 | " [ 6, 8, 10],\n",
815 | " [12, 14, 16]])"
816 | ]
817 | },
818 | "execution_count": 46,
819 | "metadata": {},
820 | "output_type": "execute_result"
821 | }
822 | ],
823 | "source": [
824 | "np.concatenate((a,b),axis = 0)"
825 | ]
826 | },
827 | {
828 | "cell_type": "code",
829 | "execution_count": 48,
830 | "metadata": {},
831 | "outputs": [
832 | {
833 | "data": {
834 | "text/plain": [
835 | "(3, 3)"
836 | ]
837 | },
838 | "execution_count": 48,
839 | "metadata": {},
840 | "output_type": "execute_result"
841 | }
842 | ],
843 | "source": [
844 | "a.shape"
845 | ]
846 | },
847 | {
848 | "cell_type": "code",
849 | "execution_count": 49,
850 | "metadata": {},
851 | "outputs": [
852 | {
853 | "data": {
854 | "text/plain": [
855 | "(3, 3)"
856 | ]
857 | },
858 | "execution_count": 49,
859 | "metadata": {},
860 | "output_type": "execute_result"
861 | }
862 | ],
863 | "source": [
864 | "b.shape"
865 | ]
866 | },
867 | {
868 | "cell_type": "code",
869 | "execution_count": 47,
870 | "metadata": {},
871 | "outputs": [
872 | {
873 | "data": {
874 | "text/plain": [
875 | "array([[[ 0, 0],\n",
876 | " [ 1, 2],\n",
877 | " [ 2, 4]],\n",
878 | "\n",
879 | " [[ 3, 6],\n",
880 | " [ 4, 8],\n",
881 | " [ 5, 10]],\n",
882 | "\n",
883 | " [[ 6, 12],\n",
884 | " [ 7, 14],\n",
885 | " [ 8, 16]]])"
886 | ]
887 | },
888 | "execution_count": 47,
889 | "metadata": {},
890 | "output_type": "execute_result"
891 | }
892 | ],
893 | "source": [
894 | "np.dstack((a,b))"
895 | ]
896 | },
897 | {
898 | "cell_type": "code",
899 | "execution_count": 50,
900 | "metadata": {},
901 | "outputs": [
902 | {
903 | "data": {
904 | "text/plain": [
905 | "(3, 3, 2)"
906 | ]
907 | },
908 | "execution_count": 50,
909 | "metadata": {},
910 | "output_type": "execute_result"
911 | }
912 | ],
913 | "source": [
914 | "np.dstack((a,b)).shape"
915 | ]
916 | },
917 | {
918 | "cell_type": "code",
919 | "execution_count": 51,
920 | "metadata": {
921 | "collapsed": true
922 | },
923 | "outputs": [],
924 | "source": [
925 | "oned = np.arange(2)"
926 | ]
927 | },
928 | {
929 | "cell_type": "code",
930 | "execution_count": 52,
931 | "metadata": {
932 | "collapsed": true
933 | },
934 | "outputs": [],
935 | "source": [
936 | "twice_oned = 2*oned"
937 | ]
938 | },
939 | {
940 | "cell_type": "code",
941 | "execution_count": 53,
942 | "metadata": {},
943 | "outputs": [
944 | {
945 | "data": {
946 | "text/plain": [
947 | "array([0, 1])"
948 | ]
949 | },
950 | "execution_count": 53,
951 | "metadata": {},
952 | "output_type": "execute_result"
953 | }
954 | ],
955 | "source": [
956 | "oned"
957 | ]
958 | },
959 | {
960 | "cell_type": "code",
961 | "execution_count": 54,
962 | "metadata": {},
963 | "outputs": [
964 | {
965 | "data": {
966 | "text/plain": [
967 | "array([0, 2])"
968 | ]
969 | },
970 | "execution_count": 54,
971 | "metadata": {},
972 | "output_type": "execute_result"
973 | }
974 | ],
975 | "source": [
976 | "twice_oned"
977 | ]
978 | },
979 | {
980 | "cell_type": "code",
981 | "execution_count": 56,
982 | "metadata": {},
983 | "outputs": [
984 | {
985 | "data": {
986 | "text/plain": [
987 | "array([[0, 0],\n",
988 | " [1, 2]])"
989 | ]
990 | },
991 | "execution_count": 56,
992 | "metadata": {},
993 | "output_type": "execute_result"
994 | }
995 | ],
996 | "source": [
997 | "np.column_stack((oned,twice_oned))"
998 | ]
999 | },
1000 | {
1001 | "cell_type": "markdown",
1002 | "metadata": {},
1003 | "source": [
1004 | "### 9 数组的分割"
1005 | ]
1006 | },
1007 | {
1008 | "cell_type": "markdown",
1009 | "metadata": {},
1010 | "source": [
1011 | "Numpy数组可以进行水平,垂直或深度分割,相关的函数有hsplit,vsplit,dsplit和split.我们可以将数组分割成相同大小的子数组,也可以指定原数组中需要分割的位置."
1012 | ]
1013 | },
1014 | {
1015 | "cell_type": "code",
1016 | "execution_count": 57,
1017 | "metadata": {},
1018 | "outputs": [
1019 | {
1020 | "data": {
1021 | "text/plain": [
1022 | "array([[0, 1, 2],\n",
1023 | " [3, 4, 5],\n",
1024 | " [6, 7, 8]])"
1025 | ]
1026 | },
1027 | "execution_count": 57,
1028 | "metadata": {},
1029 | "output_type": "execute_result"
1030 | }
1031 | ],
1032 | "source": [
1033 | "a"
1034 | ]
1035 | },
1036 | {
1037 | "cell_type": "code",
1038 | "execution_count": 58,
1039 | "metadata": {},
1040 | "outputs": [
1041 | {
1042 | "data": {
1043 | "text/plain": [
1044 | "[array([[0],\n",
1045 | " [3],\n",
1046 | " [6]]), array([[1],\n",
1047 | " [4],\n",
1048 | " [7]]), array([[2],\n",
1049 | " [5],\n",
1050 | " [8]])]"
1051 | ]
1052 | },
1053 | "execution_count": 58,
1054 | "metadata": {},
1055 | "output_type": "execute_result"
1056 | }
1057 | ],
1058 | "source": [
1059 | "np.hsplit(a,3)"
1060 | ]
1061 | },
1062 | {
1063 | "cell_type": "code",
1064 | "execution_count": 59,
1065 | "metadata": {},
1066 | "outputs": [
1067 | {
1068 | "data": {
1069 | "text/plain": [
1070 | "[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]"
1071 | ]
1072 | },
1073 | "execution_count": 59,
1074 | "metadata": {},
1075 | "output_type": "execute_result"
1076 | }
1077 | ],
1078 | "source": [
1079 | "np.vsplit(a,3)"
1080 | ]
1081 | },
1082 | {
1083 | "cell_type": "markdown",
1084 | "metadata": {},
1085 | "source": [
1086 | "### 10 数组的属性"
1087 | ]
1088 | },
1089 | {
1090 | "cell_type": "code",
1091 | "execution_count": 60,
1092 | "metadata": {},
1093 | "outputs": [
1094 | {
1095 | "data": {
1096 | "text/plain": [
1097 | "2"
1098 | ]
1099 | },
1100 | "execution_count": 60,
1101 | "metadata": {},
1102 | "output_type": "execute_result"
1103 | }
1104 | ],
1105 | "source": [
1106 | "a.ndim"
1107 | ]
1108 | },
1109 | {
1110 | "cell_type": "code",
1111 | "execution_count": 61,
1112 | "metadata": {},
1113 | "outputs": [
1114 | {
1115 | "data": {
1116 | "text/plain": [
1117 | "9"
1118 | ]
1119 | },
1120 | "execution_count": 61,
1121 | "metadata": {},
1122 | "output_type": "execute_result"
1123 | }
1124 | ],
1125 | "source": [
1126 | "a.size"
1127 | ]
1128 | },
1129 | {
1130 | "cell_type": "code",
1131 | "execution_count": 62,
1132 | "metadata": {},
1133 | "outputs": [
1134 | {
1135 | "data": {
1136 | "text/plain": [
1137 | "8"
1138 | ]
1139 | },
1140 | "execution_count": 62,
1141 | "metadata": {},
1142 | "output_type": "execute_result"
1143 | }
1144 | ],
1145 | "source": [
1146 | "a.itemsize"
1147 | ]
1148 | },
1149 | {
1150 | "cell_type": "code",
1151 | "execution_count": 63,
1152 | "metadata": {},
1153 | "outputs": [
1154 | {
1155 | "data": {
1156 | "text/plain": [
1157 | "72"
1158 | ]
1159 | },
1160 | "execution_count": 63,
1161 | "metadata": {},
1162 | "output_type": "execute_result"
1163 | }
1164 | ],
1165 | "source": [
1166 | "a.nbytes"
1167 | ]
1168 | },
1169 | {
1170 | "cell_type": "code",
1171 | "execution_count": 64,
1172 | "metadata": {},
1173 | "outputs": [
1174 | {
1175 | "data": {
1176 | "text/plain": [
1177 | "array([[0, 3, 6],\n",
1178 | " [1, 4, 7],\n",
1179 | " [2, 5, 8]])"
1180 | ]
1181 | },
1182 | "execution_count": 64,
1183 | "metadata": {},
1184 | "output_type": "execute_result"
1185 | }
1186 | ],
1187 | "source": [
1188 | "a.T"
1189 | ]
1190 | },
1191 | {
1192 | "cell_type": "markdown",
1193 | "metadata": {},
1194 | "source": [
1195 | "### 11 数组的转换"
1196 | ]
1197 | },
1198 | {
1199 | "cell_type": "markdown",
1200 | "metadata": {},
1201 | "source": [
1202 | "可以使用tolist函数将Numpy数组转换成Python列表"
1203 | ]
1204 | },
1205 | {
1206 | "cell_type": "code",
1207 | "execution_count": 65,
1208 | "metadata": {},
1209 | "outputs": [
1210 | {
1211 | "data": {
1212 | "text/plain": [
1213 | "[[0, 1, 2], [3, 4, 5], [6, 7, 8]]"
1214 | ]
1215 | },
1216 | "execution_count": 65,
1217 | "metadata": {},
1218 | "output_type": "execute_result"
1219 | }
1220 | ],
1221 | "source": [
1222 | "a.tolist()"
1223 | ]
1224 | },
1225 | {
1226 | "cell_type": "markdown",
1227 | "metadata": {},
1228 | "source": [
1229 | "astype函数可以在转换数组时指定数据类型"
1230 | ]
1231 | },
1232 | {
1233 | "cell_type": "code",
1234 | "execution_count": 66,
1235 | "metadata": {},
1236 | "outputs": [
1237 | {
1238 | "data": {
1239 | "text/plain": [
1240 | "array([[0, 1, 2],\n",
1241 | " [3, 4, 5],\n",
1242 | " [6, 7, 8]], dtype=int32)"
1243 | ]
1244 | },
1245 | "execution_count": 66,
1246 | "metadata": {},
1247 | "output_type": "execute_result"
1248 | }
1249 | ],
1250 | "source": [
1251 | "a.astype(np.int32)"
1252 | ]
1253 | },
1254 | {
1255 | "cell_type": "code",
1256 | "execution_count": null,
1257 | "metadata": {
1258 | "collapsed": true
1259 | },
1260 | "outputs": [],
1261 | "source": []
1262 | }
1263 | ],
1264 | "metadata": {
1265 | "kernelspec": {
1266 | "display_name": "Python 2",
1267 | "language": "python",
1268 | "name": "python2"
1269 | },
1270 | "language_info": {
1271 | "codemirror_mode": {
1272 | "name": "ipython",
1273 | "version": 2
1274 | },
1275 | "file_extension": ".py",
1276 | "mimetype": "text/x-python",
1277 | "name": "python",
1278 | "nbconvert_exporter": "python",
1279 | "pygments_lexer": "ipython2",
1280 | "version": "2.7.13"
1281 | }
1282 | },
1283 | "nbformat": 4,
1284 | "nbformat_minor": 2
1285 | }
1286 |
--------------------------------------------------------------------------------
/.ipynb_checkpoints/2-常用函数-checkpoint.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "## 常用函数"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "### 1 文件读写 "
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 2,
20 | "metadata": {},
21 | "outputs": [],
22 | "source": [
23 | "import numpy as np"
24 | ]
25 | },
26 | {
27 | "cell_type": "code",
28 | "execution_count": 4,
29 | "metadata": {
30 | "collapsed": true
31 | },
32 | "outputs": [],
33 | "source": [
34 | "i2 = np.eye(2)"
35 | ]
36 | },
37 | {
38 | "cell_type": "code",
39 | "execution_count": 5,
40 | "metadata": {},
41 | "outputs": [
42 | {
43 | "data": {
44 | "text/plain": [
45 | "array([[1., 0.],\n",
46 | " [0., 1.]])"
47 | ]
48 | },
49 | "execution_count": 5,
50 | "metadata": {},
51 | "output_type": "execute_result"
52 | }
53 | ],
54 | "source": [
55 | "i2"
56 | ]
57 | },
58 | {
59 | "cell_type": "code",
60 | "execution_count": 6,
61 | "metadata": {},
62 | "outputs": [
63 | {
64 | "data": {
65 | "text/plain": [
66 | "dtype('float64')"
67 | ]
68 | },
69 | "execution_count": 6,
70 | "metadata": {},
71 | "output_type": "execute_result"
72 | }
73 | ],
74 | "source": [
75 | "i2.dtype"
76 | ]
77 | },
78 | {
79 | "cell_type": "code",
80 | "execution_count": 7,
81 | "metadata": {
82 | "collapsed": true
83 | },
84 | "outputs": [],
85 | "source": [
86 | "np.savetxt('eye.txt',i2)"
87 | ]
88 | },
89 | {
90 | "cell_type": "markdown",
91 | "metadata": {},
92 | "source": [
93 | "### 2 CSV文件读写"
94 | ]
95 | },
96 | {
97 | "cell_type": "markdown",
98 | "metadata": {},
99 | "source": [
100 | "可以看到,使用逗号分隔符,usecols指定了特定的列,unpack表示将选择的列拆分成多个数据,分别接收"
101 | ]
102 | },
103 | {
104 | "cell_type": "code",
105 | "execution_count": 8,
106 | "metadata": {
107 | "collapsed": true
108 | },
109 | "outputs": [],
110 | "source": [
111 | "c,v = np.loadtxt('data.csv',delimiter=',',usecols=(6,7),unpack = True)"
112 | ]
113 | },
114 | {
115 | "cell_type": "code",
116 | "execution_count": 9,
117 | "metadata": {},
118 | "outputs": [
119 | {
120 | "data": {
121 | "text/plain": [
122 | "336.1"
123 | ]
124 | },
125 | "execution_count": 9,
126 | "metadata": {},
127 | "output_type": "execute_result"
128 | }
129 | ],
130 | "source": [
131 | "c"
132 | ]
133 | },
134 | {
135 | "cell_type": "code",
136 | "execution_count": 10,
137 | "metadata": {},
138 | "outputs": [
139 | {
140 | "data": {
141 | "text/plain": [
142 | "21144800.0"
143 | ]
144 | },
145 | "execution_count": 10,
146 | "metadata": {},
147 | "output_type": "execute_result"
148 | }
149 | ],
150 | "source": [
151 | "v"
152 | ]
153 | },
154 | {
155 | "cell_type": "markdown",
156 | "metadata": {},
157 | "source": [
158 | "### 3 成交量加权平均价格(VWAP)"
159 | ]
160 | },
161 | {
162 | "cell_type": "code",
163 | "execution_count": 11,
164 | "metadata": {
165 | "collapsed": true
166 | },
167 | "outputs": [],
168 | "source": [
169 | "vwap = np.average(c,weights =v)"
170 | ]
171 | },
172 | {
173 | "cell_type": "code",
174 | "execution_count": 12,
175 | "metadata": {},
176 | "outputs": [
177 | {
178 | "data": {
179 | "text/plain": [
180 | "336.1"
181 | ]
182 | },
183 | "execution_count": 12,
184 | "metadata": {},
185 | "output_type": "execute_result"
186 | }
187 | ],
188 | "source": [
189 | "vwap"
190 | ]
191 | },
192 | {
193 | "cell_type": "code",
194 | "execution_count": 13,
195 | "metadata": {
196 | "collapsed": true
197 | },
198 | "outputs": [],
199 | "source": [
200 | "mean = np.mean(c)"
201 | ]
202 | },
203 | {
204 | "cell_type": "code",
205 | "execution_count": 14,
206 | "metadata": {},
207 | "outputs": [
208 | {
209 | "data": {
210 | "text/plain": [
211 | "336.1"
212 | ]
213 | },
214 | "execution_count": 14,
215 | "metadata": {},
216 | "output_type": "execute_result"
217 | }
218 | ],
219 | "source": [
220 | "mean"
221 | ]
222 | },
223 | {
224 | "cell_type": "markdown",
225 | "metadata": {},
226 | "source": [
227 | "### 4 取值范围"
228 | ]
229 | },
230 | {
231 | "cell_type": "code",
232 | "execution_count": 15,
233 | "metadata": {
234 | "collapsed": true
235 | },
236 | "outputs": [],
237 | "source": [
238 | "h,l = np.loadtxt('data.csv',delimiter=',',usecols =(4,5),unpack = True)"
239 | ]
240 | },
241 | {
242 | "cell_type": "code",
243 | "execution_count": 18,
244 | "metadata": {},
245 | "outputs": [
246 | {
247 | "data": {
248 | "text/plain": [
249 | "344.4"
250 | ]
251 | },
252 | "execution_count": 18,
253 | "metadata": {},
254 | "output_type": "execute_result"
255 | }
256 | ],
257 | "source": [
258 | "h"
259 | ]
260 | },
261 | {
262 | "cell_type": "code",
263 | "execution_count": 19,
264 | "metadata": {},
265 | "outputs": [
266 | {
267 | "data": {
268 | "text/plain": [
269 | "333.53"
270 | ]
271 | },
272 | "execution_count": 19,
273 | "metadata": {},
274 | "output_type": "execute_result"
275 | }
276 | ],
277 | "source": [
278 | "l"
279 | ]
280 | },
281 | {
282 | "cell_type": "code",
283 | "execution_count": 20,
284 | "metadata": {},
285 | "outputs": [
286 | {
287 | "data": {
288 | "text/plain": [
289 | "344.4"
290 | ]
291 | },
292 | "execution_count": 20,
293 | "metadata": {},
294 | "output_type": "execute_result"
295 | }
296 | ],
297 | "source": [
298 | "np.max(h)"
299 | ]
300 | },
301 | {
302 | "cell_type": "code",
303 | "execution_count": 21,
304 | "metadata": {},
305 | "outputs": [
306 | {
307 | "data": {
308 | "text/plain": [
309 | "333.53"
310 | ]
311 | },
312 | "execution_count": 21,
313 | "metadata": {},
314 | "output_type": "execute_result"
315 | }
316 | ],
317 | "source": [
318 | "np.min(l)"
319 | ]
320 | },
321 | {
322 | "cell_type": "code",
323 | "execution_count": 22,
324 | "metadata": {},
325 | "outputs": [
326 | {
327 | "data": {
328 | "text/plain": [
329 | "0.0"
330 | ]
331 | },
332 | "execution_count": 22,
333 | "metadata": {},
334 | "output_type": "execute_result"
335 | }
336 | ],
337 | "source": [
338 | "np.ptp(h)"
339 | ]
340 | },
341 | {
342 | "cell_type": "code",
343 | "execution_count": 23,
344 | "metadata": {
345 | "collapsed": true
346 | },
347 | "outputs": [],
348 | "source": [
349 | "median = np.median(c)"
350 | ]
351 | },
352 | {
353 | "cell_type": "code",
354 | "execution_count": 24,
355 | "metadata": {},
356 | "outputs": [
357 | {
358 | "data": {
359 | "text/plain": [
360 | "336.1"
361 | ]
362 | },
363 | "execution_count": 24,
364 | "metadata": {},
365 | "output_type": "execute_result"
366 | }
367 | ],
368 | "source": [
369 | "median"
370 | ]
371 | },
372 | {
373 | "cell_type": "code",
374 | "execution_count": 25,
375 | "metadata": {
376 | "collapsed": true
377 | },
378 | "outputs": [],
379 | "source": [
380 | "a = np.random.randn(10)"
381 | ]
382 | },
383 | {
384 | "cell_type": "code",
385 | "execution_count": 26,
386 | "metadata": {},
387 | "outputs": [
388 | {
389 | "data": {
390 | "text/plain": [
391 | "array([-0.91366364, 0.56874779, 1.93163306, -1.20680229, 0.61898735,\n",
392 | " -0.03009919, 1.0977881 , -1.69915867, -0.54960063, -0.38438985])"
393 | ]
394 | },
395 | "execution_count": 26,
396 | "metadata": {},
397 | "output_type": "execute_result"
398 | }
399 | ],
400 | "source": [
401 | "a"
402 | ]
403 | },
404 | {
405 | "cell_type": "code",
406 | "execution_count": 27,
407 | "metadata": {
408 | "collapsed": true
409 | },
410 | "outputs": [],
411 | "source": [
412 | "sorted_close = np.msort(a)"
413 | ]
414 | },
415 | {
416 | "cell_type": "code",
417 | "execution_count": 28,
418 | "metadata": {},
419 | "outputs": [
420 | {
421 | "data": {
422 | "text/plain": [
423 | "array([-1.69915867, -1.20680229, -0.91366364, -0.54960063, -0.38438985,\n",
424 | " -0.03009919, 0.56874779, 0.61898735, 1.0977881 , 1.93163306])"
425 | ]
426 | },
427 | "execution_count": 28,
428 | "metadata": {},
429 | "output_type": "execute_result"
430 | }
431 | ],
432 | "source": [
433 | "sorted_close"
434 | ]
435 | },
436 | {
437 | "cell_type": "code",
438 | "execution_count": 29,
439 | "metadata": {},
440 | "outputs": [
441 | {
442 | "data": {
443 | "text/plain": [
444 | "-0.20724452344036656"
445 | ]
446 | },
447 | "execution_count": 29,
448 | "metadata": {},
449 | "output_type": "execute_result"
450 | }
451 | ],
452 | "source": [
453 | "np.median(a)"
454 | ]
455 | },
456 | {
457 | "cell_type": "code",
458 | "execution_count": 30,
459 | "metadata": {},
460 | "outputs": [
461 | {
462 | "data": {
463 | "text/plain": [
464 | "-0.05665579774572808"
465 | ]
466 | },
467 | "execution_count": 30,
468 | "metadata": {},
469 | "output_type": "execute_result"
470 | }
471 | ],
472 | "source": [
473 | "np.mean(a)"
474 | ]
475 | },
476 | {
477 | "cell_type": "code",
478 | "execution_count": 31,
479 | "metadata": {},
480 | "outputs": [
481 | {
482 | "data": {
483 | "text/plain": [
484 | "1.123988115028372"
485 | ]
486 | },
487 | "execution_count": 31,
488 | "metadata": {},
489 | "output_type": "execute_result"
490 | }
491 | ],
492 | "source": [
493 | "np.var(a)"
494 | ]
495 | },
496 | {
497 | "cell_type": "code",
498 | "execution_count": 32,
499 | "metadata": {},
500 | "outputs": [
501 | {
502 | "data": {
503 | "text/plain": [
504 | "array([ 1.48241142, 1.36288528, -3.13843535, 1.82578963, -0.64908654,\n",
505 | " 1.1278873 , -2.79694677, 1.14955804, 0.16521078])"
506 | ]
507 | },
508 | "execution_count": 32,
509 | "metadata": {},
510 | "output_type": "execute_result"
511 | }
512 | ],
513 | "source": [
514 | "np.diff(a)"
515 | ]
516 | },
517 | {
518 | "cell_type": "code",
519 | "execution_count": 33,
520 | "metadata": {},
521 | "outputs": [
522 | {
523 | "data": {
524 | "text/plain": [
525 | "array([-0.91366364, 0.56874779, 1.93163306, -1.20680229, 0.61898735,\n",
526 | " -0.03009919, 1.0977881 , -1.69915867, -0.54960063, -0.38438985])"
527 | ]
528 | },
529 | "execution_count": 33,
530 | "metadata": {},
531 | "output_type": "execute_result"
532 | }
533 | ],
534 | "source": [
535 | "a"
536 | ]
537 | },
538 | {
539 | "cell_type": "code",
540 | "execution_count": 35,
541 | "metadata": {},
542 | "outputs": [],
543 | "source": [
544 | "returns = np.diff(a)/a[:-1]"
545 | ]
546 | },
547 | {
548 | "cell_type": "code",
549 | "execution_count": 36,
550 | "metadata": {},
551 | "outputs": [
552 | {
553 | "data": {
554 | "text/plain": [
555 | "array([ -1.62249143, 2.39629113, -1.62475752, -1.51291529,\n",
556 | " -1.04862651, -37.47234271, -2.54780204, -0.67654543,\n",
557 | " -0.30060151])"
558 | ]
559 | },
560 | "execution_count": 36,
561 | "metadata": {},
562 | "output_type": "execute_result"
563 | }
564 | ],
565 | "source": [
566 | "returns"
567 | ]
568 | },
569 | {
570 | "cell_type": "code",
571 | "execution_count": 37,
572 | "metadata": {},
573 | "outputs": [
574 | {
575 | "data": {
576 | "text/plain": [
577 | "11.57815124733535"
578 | ]
579 | },
580 | "execution_count": 37,
581 | "metadata": {},
582 | "output_type": "execute_result"
583 | }
584 | ],
585 | "source": [
586 | "np.std(returns)"
587 | ]
588 | },
589 | {
590 | "cell_type": "code",
591 | "execution_count": 38,
592 | "metadata": {},
593 | "outputs": [
594 | {
595 | "data": {
596 | "text/plain": [
597 | "(array([1]),)"
598 | ]
599 | },
600 | "execution_count": 38,
601 | "metadata": {},
602 | "output_type": "execute_result"
603 | }
604 | ],
605 | "source": [
606 | "np.where(returns>0)"
607 | ]
608 | },
609 | {
610 | "cell_type": "code",
611 | "execution_count": 39,
612 | "metadata": {},
613 | "outputs": [
614 | {
615 | "data": {
616 | "text/plain": [
617 | "0.0"
618 | ]
619 | },
620 | "execution_count": 39,
621 | "metadata": {},
622 | "output_type": "execute_result"
623 | }
624 | ],
625 | "source": [
626 | "np.sqrt(1/12)"
627 | ]
628 | },
629 | {
630 | "cell_type": "code",
631 | "execution_count": 40,
632 | "metadata": {},
633 | "outputs": [
634 | {
635 | "data": {
636 | "text/plain": [
637 | "0.28867513459481287"
638 | ]
639 | },
640 | "execution_count": 40,
641 | "metadata": {},
642 | "output_type": "execute_result"
643 | }
644 | ],
645 | "source": [
646 | "np.sqrt (1./12)"
647 | ]
648 | },
649 | {
650 | "cell_type": "code",
651 | "execution_count": 41,
652 | "metadata": {
653 | "collapsed": true
654 | },
655 | "outputs": [],
656 | "source": [
657 | "a = np.arange(10)"
658 | ]
659 | },
660 | {
661 | "cell_type": "code",
662 | "execution_count": 42,
663 | "metadata": {
664 | "collapsed": true
665 | },
666 | "outputs": [],
667 | "source": [
668 | "indices = np.where(a>5)"
669 | ]
670 | },
671 | {
672 | "cell_type": "code",
673 | "execution_count": 43,
674 | "metadata": {},
675 | "outputs": [
676 | {
677 | "data": {
678 | "text/plain": [
679 | "array([[6, 7, 8, 9]])"
680 | ]
681 | },
682 | "execution_count": 43,
683 | "metadata": {},
684 | "output_type": "execute_result"
685 | }
686 | ],
687 | "source": [
688 | "np.take(a,indices)"
689 | ]
690 | },
691 | {
692 | "cell_type": "code",
693 | "execution_count": 44,
694 | "metadata": {},
695 | "outputs": [
696 | {
697 | "data": {
698 | "text/plain": [
699 | "0"
700 | ]
701 | },
702 | "execution_count": 44,
703 | "metadata": {},
704 | "output_type": "execute_result"
705 | }
706 | ],
707 | "source": [
708 | "np.argmin(a)"
709 | ]
710 | },
711 | {
712 | "cell_type": "code",
713 | "execution_count": 45,
714 | "metadata": {},
715 | "outputs": [
716 | {
717 | "data": {
718 | "text/plain": [
719 | "9"
720 | ]
721 | },
722 | "execution_count": 45,
723 | "metadata": {},
724 | "output_type": "execute_result"
725 | }
726 | ],
727 | "source": [
728 | "np.argmax(a)"
729 | ]
730 | },
731 | {
732 | "cell_type": "code",
733 | "execution_count": 46,
734 | "metadata": {},
735 | "outputs": [
736 | {
737 | "data": {
738 | "text/plain": [
739 | "array([1., 1., 1., 1., 1.])"
740 | ]
741 | },
742 | "execution_count": 46,
743 | "metadata": {},
744 | "output_type": "execute_result"
745 | }
746 | ],
747 | "source": [
748 | "np.ones(5)"
749 | ]
750 | },
751 | {
752 | "cell_type": "code",
753 | "execution_count": 47,
754 | "metadata": {
755 | "collapsed": true
756 | },
757 | "outputs": [],
758 | "source": [
759 | "a = np.ones(10)"
760 | ]
761 | },
762 | {
763 | "cell_type": "code",
764 | "execution_count": 48,
765 | "metadata": {
766 | "collapsed": true
767 | },
768 | "outputs": [],
769 | "source": [
770 | "a.fill(5)"
771 | ]
772 | },
773 | {
774 | "cell_type": "code",
775 | "execution_count": 49,
776 | "metadata": {},
777 | "outputs": [
778 | {
779 | "data": {
780 | "text/plain": [
781 | "array([5., 5., 5., 5., 5., 5., 5., 5., 5., 5.])"
782 | ]
783 | },
784 | "execution_count": 49,
785 | "metadata": {},
786 | "output_type": "execute_result"
787 | }
788 | ],
789 | "source": [
790 | "a"
791 | ]
792 | },
793 | {
794 | "cell_type": "code",
795 | "execution_count": 51,
796 | "metadata": {},
797 | "outputs": [
798 | {
799 | "data": {
800 | "text/plain": [
801 | "array([[1, 1, 1],\n",
802 | " [1, 1, 1]], dtype=int32)"
803 | ]
804 | },
805 | "execution_count": 51,
806 | "metadata": {},
807 | "output_type": "execute_result"
808 | }
809 | ],
810 | "source": [
811 | "np.ones(shape=(2,3),dtype = np.int32)"
812 | ]
813 | },
814 | {
815 | "cell_type": "markdown",
816 | "metadata": {},
817 | "source": [
818 | "np.dot 如果处理的是一维数据,那么就是点积,如果处理二维数据,就是矩阵的乘积"
819 | ]
820 | },
821 | {
822 | "cell_type": "code",
823 | "execution_count": 52,
824 | "metadata": {
825 | "collapsed": true
826 | },
827 | "outputs": [],
828 | "source": [
829 | "a = np.arange(9)"
830 | ]
831 | },
832 | {
833 | "cell_type": "code",
834 | "execution_count": 53,
835 | "metadata": {
836 | "collapsed": true
837 | },
838 | "outputs": [],
839 | "source": [
840 | "b = np.arange(9)"
841 | ]
842 | },
843 | {
844 | "cell_type": "code",
845 | "execution_count": 54,
846 | "metadata": {},
847 | "outputs": [
848 | {
849 | "data": {
850 | "text/plain": [
851 | "204"
852 | ]
853 | },
854 | "execution_count": 54,
855 | "metadata": {},
856 | "output_type": "execute_result"
857 | }
858 | ],
859 | "source": [
860 | "np.dot(a,b)"
861 | ]
862 | },
863 | {
864 | "cell_type": "code",
865 | "execution_count": 56,
866 | "metadata": {},
867 | "outputs": [],
868 | "source": [
869 | "a = a.reshape(3,3)"
870 | ]
871 | },
872 | {
873 | "cell_type": "code",
874 | "execution_count": 57,
875 | "metadata": {},
876 | "outputs": [
877 | {
878 | "data": {
879 | "text/plain": [
880 | "array([[0, 1, 2],\n",
881 | " [3, 4, 5],\n",
882 | " [6, 7, 8]])"
883 | ]
884 | },
885 | "execution_count": 57,
886 | "metadata": {},
887 | "output_type": "execute_result"
888 | }
889 | ],
890 | "source": [
891 | "a"
892 | ]
893 | },
894 | {
895 | "cell_type": "code",
896 | "execution_count": 58,
897 | "metadata": {
898 | "collapsed": true
899 | },
900 | "outputs": [],
901 | "source": [
902 | "b = b.reshape(3,3)"
903 | ]
904 | },
905 | {
906 | "cell_type": "code",
907 | "execution_count": 59,
908 | "metadata": {},
909 | "outputs": [
910 | {
911 | "data": {
912 | "text/plain": [
913 | "array([[ 15, 18, 21],\n",
914 | " [ 42, 54, 66],\n",
915 | " [ 69, 90, 111]])"
916 | ]
917 | },
918 | "execution_count": 59,
919 | "metadata": {},
920 | "output_type": "execute_result"
921 | }
922 | ],
923 | "source": [
924 | "np.dot(a,b)"
925 | ]
926 | },
927 | {
928 | "cell_type": "code",
929 | "execution_count": 60,
930 | "metadata": {},
931 | "outputs": [
932 | {
933 | "data": {
934 | "text/plain": [
935 | "array([[3, 3, 3],\n",
936 | " [3, 4, 5],\n",
937 | " [6, 6, 6]])"
938 | ]
939 | },
940 | "execution_count": 60,
941 | "metadata": {},
942 | "output_type": "execute_result"
943 | }
944 | ],
945 | "source": [
946 | "b.clip(3,6)"
947 | ]
948 | },
949 | {
950 | "cell_type": "code",
951 | "execution_count": 62,
952 | "metadata": {},
953 | "outputs": [],
954 | "source": [
955 | "a = np.arange(9)"
956 | ]
957 | },
958 | {
959 | "cell_type": "code",
960 | "execution_count": 63,
961 | "metadata": {},
962 | "outputs": [
963 | {
964 | "data": {
965 | "text/plain": [
966 | "array([3, 4, 5, 6, 7, 8])"
967 | ]
968 | },
969 | "execution_count": 63,
970 | "metadata": {},
971 | "output_type": "execute_result"
972 | }
973 | ],
974 | "source": [
975 | "a.compress(a>2)"
976 | ]
977 | },
978 | {
979 | "cell_type": "code",
980 | "execution_count": 65,
981 | "metadata": {},
982 | "outputs": [],
983 | "source": [
984 | "a = np.arange(1,9)"
985 | ]
986 | },
987 | {
988 | "cell_type": "code",
989 | "execution_count": 66,
990 | "metadata": {},
991 | "outputs": [
992 | {
993 | "data": {
994 | "text/plain": [
995 | "40320"
996 | ]
997 | },
998 | "execution_count": 66,
999 | "metadata": {},
1000 | "output_type": "execute_result"
1001 | }
1002 | ],
1003 | "source": [
1004 | "a.prod()"
1005 | ]
1006 | },
1007 | {
1008 | "cell_type": "code",
1009 | "execution_count": 67,
1010 | "metadata": {},
1011 | "outputs": [
1012 | {
1013 | "data": {
1014 | "text/plain": [
1015 | "array([ 1, 2, 6, 24, 120, 720, 5040, 40320])"
1016 | ]
1017 | },
1018 | "execution_count": 67,
1019 | "metadata": {},
1020 | "output_type": "execute_result"
1021 | }
1022 | ],
1023 | "source": [
1024 | "a.cumprod()"
1025 | ]
1026 | }
1027 | ],
1028 | "metadata": {
1029 | "kernelspec": {
1030 | "display_name": "Python 2",
1031 | "language": "python",
1032 | "name": "python2"
1033 | },
1034 | "language_info": {
1035 | "codemirror_mode": {
1036 | "name": "ipython",
1037 | "version": 2
1038 | },
1039 | "file_extension": ".py",
1040 | "mimetype": "text/x-python",
1041 | "name": "python",
1042 | "nbconvert_exporter": "python",
1043 | "pygments_lexer": "ipython2",
1044 | "version": "2.7.13"
1045 | }
1046 | },
1047 | "nbformat": 4,
1048 | "nbformat_minor": 2
1049 | }
1050 |
--------------------------------------------------------------------------------
/.ipynb_checkpoints/3-便捷函数-checkpoint.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "## 便捷函数"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "### 1 常用函数"
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 2,
20 | "metadata": {},
21 | "outputs": [],
22 | "source": [
23 | "import numpy as np"
24 | ]
25 | },
26 | {
27 | "cell_type": "code",
28 | "execution_count": 3,
29 | "metadata": {
30 | "collapsed": true
31 | },
32 | "outputs": [],
33 | "source": [
34 | "a = np.arange(-5,5)"
35 | ]
36 | },
37 | {
38 | "cell_type": "code",
39 | "execution_count": 9,
40 | "metadata": {},
41 | "outputs": [],
42 | "source": [
43 | "signs = np.sign(a)"
44 | ]
45 | },
46 | {
47 | "cell_type": "code",
48 | "execution_count": 10,
49 | "metadata": {},
50 | "outputs": [],
51 | "source": [
52 | "piecewises = np.piecewise(a,[a>0,a<0],[1,-1])"
53 | ]
54 | },
55 | {
56 | "cell_type": "code",
57 | "execution_count": 12,
58 | "metadata": {},
59 | "outputs": [
60 | {
61 | "data": {
62 | "text/plain": [
63 | "True"
64 | ]
65 | },
66 | "execution_count": 12,
67 | "metadata": {},
68 | "output_type": "execute_result"
69 | }
70 | ],
71 | "source": [
72 | "np.array_equal(signs,piecewises)"
73 | ]
74 | },
75 | {
76 | "cell_type": "markdown",
77 | "metadata": {},
78 | "source": [
79 | "### 2 创建矩阵"
80 | ]
81 | },
82 | {
83 | "cell_type": "code",
84 | "execution_count": 13,
85 | "metadata": {
86 | "collapsed": true
87 | },
88 | "outputs": [],
89 | "source": [
90 | "A = np.mat('1 2 3; 4 5 6; 7 8 9')"
91 | ]
92 | },
93 | {
94 | "cell_type": "code",
95 | "execution_count": 14,
96 | "metadata": {},
97 | "outputs": [
98 | {
99 | "data": {
100 | "text/plain": [
101 | "matrix([[1, 2, 3],\n",
102 | " [4, 5, 6],\n",
103 | " [7, 8, 9]])"
104 | ]
105 | },
106 | "execution_count": 14,
107 | "metadata": {},
108 | "output_type": "execute_result"
109 | }
110 | ],
111 | "source": [
112 | "A"
113 | ]
114 | },
115 | {
116 | "cell_type": "code",
117 | "execution_count": 15,
118 | "metadata": {},
119 | "outputs": [
120 | {
121 | "data": {
122 | "text/plain": [
123 | "matrix([[1, 4, 7],\n",
124 | " [2, 5, 8],\n",
125 | " [3, 6, 9]])"
126 | ]
127 | },
128 | "execution_count": 15,
129 | "metadata": {},
130 | "output_type": "execute_result"
131 | }
132 | ],
133 | "source": [
134 | "A.T"
135 | ]
136 | },
137 | {
138 | "cell_type": "code",
139 | "execution_count": 19,
140 | "metadata": {},
141 | "outputs": [],
142 | "source": [
143 | "A = np.eye(2)"
144 | ]
145 | },
146 | {
147 | "cell_type": "code",
148 | "execution_count": 20,
149 | "metadata": {},
150 | "outputs": [
151 | {
152 | "data": {
153 | "text/plain": [
154 | "array([[1., 0.],\n",
155 | " [0., 1.]])"
156 | ]
157 | },
158 | "execution_count": 20,
159 | "metadata": {},
160 | "output_type": "execute_result"
161 | }
162 | ],
163 | "source": [
164 | "A"
165 | ]
166 | },
167 | {
168 | "cell_type": "code",
169 | "execution_count": 21,
170 | "metadata": {
171 | "collapsed": true
172 | },
173 | "outputs": [],
174 | "source": [
175 | "B = 2*A"
176 | ]
177 | },
178 | {
179 | "cell_type": "code",
180 | "execution_count": 22,
181 | "metadata": {},
182 | "outputs": [
183 | {
184 | "data": {
185 | "text/plain": [
186 | "array([[2., 0.],\n",
187 | " [0., 2.]])"
188 | ]
189 | },
190 | "execution_count": 22,
191 | "metadata": {},
192 | "output_type": "execute_result"
193 | }
194 | ],
195 | "source": [
196 | "B"
197 | ]
198 | },
199 | {
200 | "cell_type": "code",
201 | "execution_count": 23,
202 | "metadata": {},
203 | "outputs": [
204 | {
205 | "data": {
206 | "text/plain": [
207 | "matrix([[1., 0., 2., 0.],\n",
208 | " [0., 1., 0., 2.],\n",
209 | " [1., 0., 2., 0.],\n",
210 | " [0., 1., 0., 2.]])"
211 | ]
212 | },
213 | "execution_count": 23,
214 | "metadata": {},
215 | "output_type": "execute_result"
216 | }
217 | ],
218 | "source": [
219 | "np.bmat('A B;A B')"
220 | ]
221 | },
222 | {
223 | "cell_type": "markdown",
224 | "metadata": {},
225 | "source": [
226 | "### 3 通用函数"
227 | ]
228 | },
229 | {
230 | "cell_type": "markdown",
231 | "metadata": {},
232 | "source": [
233 | "通用函数的输入是一组标量,输出也是一组标量,他们通常可以对应于基本数学运算,如加减乘除"
234 | ]
235 | },
236 | {
237 | "cell_type": "code",
238 | "execution_count": 24,
239 | "metadata": {
240 | "collapsed": true
241 | },
242 | "outputs": [],
243 | "source": [
244 | "def ultimate_answer(a):\n",
245 | " return np.zeros_like(a)"
246 | ]
247 | },
248 | {
249 | "cell_type": "code",
250 | "execution_count": 25,
251 | "metadata": {
252 | "collapsed": true
253 | },
254 | "outputs": [],
255 | "source": [
256 | "a = np.eye(3)"
257 | ]
258 | },
259 | {
260 | "cell_type": "code",
261 | "execution_count": 26,
262 | "metadata": {},
263 | "outputs": [
264 | {
265 | "data": {
266 | "text/plain": [
267 | "array([[0., 0., 0.],\n",
268 | " [0., 0., 0.],\n",
269 | " [0., 0., 0.]])"
270 | ]
271 | },
272 | "execution_count": 26,
273 | "metadata": {},
274 | "output_type": "execute_result"
275 | }
276 | ],
277 | "source": [
278 | "ultimate_answer(a)"
279 | ]
280 | },
281 | {
282 | "cell_type": "code",
283 | "execution_count": 27,
284 | "metadata": {},
285 | "outputs": [
286 | {
287 | "data": {
288 | "text/plain": [
289 | ""
290 | ]
291 | },
292 | "execution_count": 27,
293 | "metadata": {},
294 | "output_type": "execute_result"
295 | }
296 | ],
297 | "source": [
298 | "a.flat"
299 | ]
300 | },
301 | {
302 | "cell_type": "code",
303 | "execution_count": 28,
304 | "metadata": {},
305 | "outputs": [
306 | {
307 | "data": {
308 | "text/plain": [
309 | "[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]"
310 | ]
311 | },
312 | "execution_count": 28,
313 | "metadata": {},
314 | "output_type": "execute_result"
315 | }
316 | ],
317 | "source": [
318 | "list(a.flat)"
319 | ]
320 | },
321 | {
322 | "cell_type": "code",
323 | "execution_count": 29,
324 | "metadata": {
325 | "collapsed": true
326 | },
327 | "outputs": [],
328 | "source": [
329 | "a = np.arange(9)"
330 | ]
331 | },
332 | {
333 | "cell_type": "code",
334 | "execution_count": 30,
335 | "metadata": {},
336 | "outputs": [
337 | {
338 | "data": {
339 | "text/plain": [
340 | "36"
341 | ]
342 | },
343 | "execution_count": 30,
344 | "metadata": {},
345 | "output_type": "execute_result"
346 | }
347 | ],
348 | "source": [
349 | "np.add.reduce(a)"
350 | ]
351 | },
352 | {
353 | "cell_type": "code",
354 | "execution_count": 31,
355 | "metadata": {},
356 | "outputs": [
357 | {
358 | "data": {
359 | "text/plain": [
360 | "array([ 0, 1, 3, 6, 10, 15, 21, 28, 36])"
361 | ]
362 | },
363 | "execution_count": 31,
364 | "metadata": {},
365 | "output_type": "execute_result"
366 | }
367 | ],
368 | "source": [
369 | "np.add.accumulate(a)"
370 | ]
371 | },
372 | {
373 | "cell_type": "markdown",
374 | "metadata": {},
375 | "source": [
376 | "### 4 算术运算"
377 | ]
378 | },
379 | {
380 | "cell_type": "code",
381 | "execution_count": 32,
382 | "metadata": {
383 | "collapsed": true
384 | },
385 | "outputs": [],
386 | "source": [
387 | "a = np.array([2,6,5])\n",
388 | "b = np.array([1,2,3])"
389 | ]
390 | },
391 | {
392 | "cell_type": "code",
393 | "execution_count": 33,
394 | "metadata": {},
395 | "outputs": [
396 | {
397 | "data": {
398 | "text/plain": [
399 | "array([2, 3, 1])"
400 | ]
401 | },
402 | "execution_count": 33,
403 | "metadata": {},
404 | "output_type": "execute_result"
405 | }
406 | ],
407 | "source": [
408 | "np.divide(a,b)"
409 | ]
410 | },
411 | {
412 | "cell_type": "code",
413 | "execution_count": 34,
414 | "metadata": {},
415 | "outputs": [
416 | {
417 | "data": {
418 | "text/plain": [
419 | "array([0, 0, 0])"
420 | ]
421 | },
422 | "execution_count": 34,
423 | "metadata": {},
424 | "output_type": "execute_result"
425 | }
426 | ],
427 | "source": [
428 | "np.divide(b,a)"
429 | ]
430 | },
431 | {
432 | "cell_type": "code",
433 | "execution_count": 35,
434 | "metadata": {},
435 | "outputs": [
436 | {
437 | "data": {
438 | "text/plain": [
439 | "array([2. , 3. , 1.66666667])"
440 | ]
441 | },
442 | "execution_count": 35,
443 | "metadata": {},
444 | "output_type": "execute_result"
445 | }
446 | ],
447 | "source": [
448 | "np.true_divide(a,b)"
449 | ]
450 | },
451 | {
452 | "cell_type": "code",
453 | "execution_count": 36,
454 | "metadata": {},
455 | "outputs": [
456 | {
457 | "data": {
458 | "text/plain": [
459 | "array([0.5 , 0.33333333, 0.6 ])"
460 | ]
461 | },
462 | "execution_count": 36,
463 | "metadata": {},
464 | "output_type": "execute_result"
465 | }
466 | ],
467 | "source": [
468 | "np.true_divide(b,a)"
469 | ]
470 | },
471 | {
472 | "cell_type": "code",
473 | "execution_count": 37,
474 | "metadata": {
475 | "collapsed": true
476 | },
477 | "outputs": [],
478 | "source": [
479 | "from __future__ import division"
480 | ]
481 | },
482 | {
483 | "cell_type": "code",
484 | "execution_count": 38,
485 | "metadata": {},
486 | "outputs": [
487 | {
488 | "data": {
489 | "text/plain": [
490 | "array([2. , 3. , 1.66666667])"
491 | ]
492 | },
493 | "execution_count": 38,
494 | "metadata": {},
495 | "output_type": "execute_result"
496 | }
497 | ],
498 | "source": [
499 | "a/b"
500 | ]
501 | },
502 | {
503 | "cell_type": "code",
504 | "execution_count": 39,
505 | "metadata": {},
506 | "outputs": [
507 | {
508 | "data": {
509 | "text/plain": [
510 | "array([2, 3, 1])"
511 | ]
512 | },
513 | "execution_count": 39,
514 | "metadata": {},
515 | "output_type": "execute_result"
516 | }
517 | ],
518 | "source": [
519 | "a//b"
520 | ]
521 | },
522 | {
523 | "cell_type": "code",
524 | "execution_count": 40,
525 | "metadata": {
526 | "collapsed": true
527 | },
528 | "outputs": [],
529 | "source": [
530 | "a = np.arange(-4,4)"
531 | ]
532 | },
533 | {
534 | "cell_type": "code",
535 | "execution_count": 41,
536 | "metadata": {},
537 | "outputs": [
538 | {
539 | "data": {
540 | "text/plain": [
541 | "array([-4, -3, -2, -1, 0, 1, 2, 3])"
542 | ]
543 | },
544 | "execution_count": 41,
545 | "metadata": {},
546 | "output_type": "execute_result"
547 | }
548 | ],
549 | "source": [
550 | "a"
551 | ]
552 | },
553 | {
554 | "cell_type": "code",
555 | "execution_count": 42,
556 | "metadata": {},
557 | "outputs": [
558 | {
559 | "data": {
560 | "text/plain": [
561 | "array([0, 1, 0, 1, 0, 1, 0, 1])"
562 | ]
563 | },
564 | "execution_count": 42,
565 | "metadata": {},
566 | "output_type": "execute_result"
567 | }
568 | ],
569 | "source": [
570 | "np.remainder(a,2)"
571 | ]
572 | },
573 | {
574 | "cell_type": "code",
575 | "execution_count": 43,
576 | "metadata": {},
577 | "outputs": [
578 | {
579 | "data": {
580 | "text/plain": [
581 | "array([0, 1, 0, 1, 0, 1, 0, 1])"
582 | ]
583 | },
584 | "execution_count": 43,
585 | "metadata": {},
586 | "output_type": "execute_result"
587 | }
588 | ],
589 | "source": [
590 | "np.mod(a,2)"
591 | ]
592 | },
593 | {
594 | "cell_type": "code",
595 | "execution_count": 44,
596 | "metadata": {},
597 | "outputs": [
598 | {
599 | "data": {
600 | "text/plain": [
601 | "array([0, 1, 0, 1, 0, 1, 0, 1])"
602 | ]
603 | },
604 | "execution_count": 44,
605 | "metadata": {},
606 | "output_type": "execute_result"
607 | }
608 | ],
609 | "source": [
610 | "a%2"
611 | ]
612 | },
613 | {
614 | "cell_type": "code",
615 | "execution_count": 45,
616 | "metadata": {},
617 | "outputs": [
618 | {
619 | "data": {
620 | "text/plain": [
621 | "array([ 0, -1, 0, -1, 0, 1, 0, 1])"
622 | ]
623 | },
624 | "execution_count": 45,
625 | "metadata": {},
626 | "output_type": "execute_result"
627 | }
628 | ],
629 | "source": [
630 | "np.fmod(a,2)"
631 | ]
632 | },
633 | {
634 | "cell_type": "code",
635 | "execution_count": 46,
636 | "metadata": {
637 | "collapsed": true
638 | },
639 | "outputs": [],
640 | "source": [
641 | "from matplotlib.pyplot import plot\n",
642 | "from matplotlib.pyplot import show"
643 | ]
644 | },
645 | {
646 | "cell_type": "code",
647 | "execution_count": 47,
648 | "metadata": {
649 | "collapsed": true
650 | },
651 | "outputs": [],
652 | "source": [
653 | "a = 1\n",
654 | "b =2"
655 | ]
656 | },
657 | {
658 | "cell_type": "code",
659 | "execution_count": 48,
660 | "metadata": {
661 | "collapsed": true
662 | },
663 | "outputs": [],
664 | "source": [
665 | "t = np.linspace(-np.pi,np.pi,201)"
666 | ]
667 | },
668 | {
669 | "cell_type": "code",
670 | "execution_count": 49,
671 | "metadata": {
672 | "collapsed": true
673 | },
674 | "outputs": [],
675 | "source": [
676 | "x = np.sin(a*t +np.pi/2)\n",
677 | "y = np.sin(b*t)"
678 | ]
679 | },
680 | {
681 | "cell_type": "code",
682 | "execution_count": 52,
683 | "metadata": {},
684 | "outputs": [
685 | {
686 | "data": {
687 | "text/plain": [
688 | "[]"
689 | ]
690 | },
691 | "execution_count": 52,
692 | "metadata": {},
693 | "output_type": "execute_result"
694 | }
695 | ],
696 | "source": [
697 | "plot(x)"
698 | ]
699 | },
700 | {
701 | "cell_type": "code",
702 | "execution_count": 53,
703 | "metadata": {},
704 | "outputs": [
705 | {
706 | "data": {
707 | "image/png": "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\n",
708 | "text/plain": [
709 | ""
710 | ]
711 | },
712 | "metadata": {},
713 | "output_type": "display_data"
714 | }
715 | ],
716 | "source": [
717 | "show()"
718 | ]
719 | }
720 | ],
721 | "metadata": {
722 | "kernelspec": {
723 | "display_name": "Python 2",
724 | "language": "python",
725 | "name": "python2"
726 | },
727 | "language_info": {
728 | "codemirror_mode": {
729 | "name": "ipython",
730 | "version": 2
731 | },
732 | "file_extension": ".py",
733 | "mimetype": "text/x-python",
734 | "name": "python",
735 | "nbconvert_exporter": "python",
736 | "pygments_lexer": "ipython2",
737 | "version": "2.7.13"
738 | }
739 | },
740 | "nbformat": 4,
741 | "nbformat_minor": 2
742 | }
743 |
--------------------------------------------------------------------------------
/.ipynb_checkpoints/5-质量控制-checkpoint.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "## 质量控制"
8 | ]
9 | },
10 | {
11 | "cell_type": "code",
12 | "execution_count": 47,
13 | "metadata": {
14 | "collapsed": true
15 | },
16 | "outputs": [],
17 | "source": [
18 | "import numpy as np"
19 | ]
20 | },
21 | {
22 | "cell_type": "code",
23 | "execution_count": 48,
24 | "metadata": {
25 | "collapsed": true
26 | },
27 | "outputs": [],
28 | "source": [
29 | "np.testing.assert_almost_equal(0.12345,0.12346,decimal=5)"
30 | ]
31 | },
32 | {
33 | "cell_type": "code",
34 | "execution_count": 49,
35 | "metadata": {},
36 | "outputs": [
37 | {
38 | "ename": "AssertionError",
39 | "evalue": "\nArrays are not almost equal to 6 decimals\n ACTUAL: 0.12345\n DESIRED: 0.12346",
40 | "output_type": "error",
41 | "traceback": [
42 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
43 | "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)",
44 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtesting\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0massert_almost_equal\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0.12345\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0.12346\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdecimal\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
45 | "\u001b[0;32m/home/xujun/anaconda2/lib/python2.7/site-packages/numpy/testing/nose_tools/utils.pyc\u001b[0m in \u001b[0;36massert_almost_equal\u001b[0;34m(actual, desired, decimal, err_msg, verbose)\u001b[0m\n\u001b[1;32m 579\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 580\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mabs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdesired\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mactual\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m1.5\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;36m10.0\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mdecimal\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 581\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mAssertionError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_build_err_msg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 582\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 583\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
46 | "\u001b[0;31mAssertionError\u001b[0m: \nArrays are not almost equal to 6 decimals\n ACTUAL: 0.12345\n DESIRED: 0.12346"
47 | ]
48 | }
49 | ],
50 | "source": [
51 | "np.testing.assert_almost_equal(0.12345,0.12346,decimal=6)"
52 | ]
53 | },
54 | {
55 | "cell_type": "code",
56 | "execution_count": 50,
57 | "metadata": {},
58 | "outputs": [],
59 | "source": [
60 | "import matplotlib.pyplot as plt"
61 | ]
62 | },
63 | {
64 | "cell_type": "code",
65 | "execution_count": 51,
66 | "metadata": {
67 | "collapsed": true
68 | },
69 | "outputs": [],
70 | "source": [
71 | "func = np.poly1d(np.array([1,2,3,4]).astype(np.float32))"
72 | ]
73 | },
74 | {
75 | "cell_type": "code",
76 | "execution_count": 52,
77 | "metadata": {
78 | "collapsed": true
79 | },
80 | "outputs": [],
81 | "source": [
82 | "x = np.linspace(-10,10,30)"
83 | ]
84 | },
85 | {
86 | "cell_type": "code",
87 | "execution_count": 53,
88 | "metadata": {
89 | "collapsed": true
90 | },
91 | "outputs": [],
92 | "source": [
93 | "y = func(x)"
94 | ]
95 | },
96 | {
97 | "cell_type": "code",
98 | "execution_count": 54,
99 | "metadata": {},
100 | "outputs": [
101 | {
102 | "data": {
103 | "text/plain": [
104 | "[]"
105 | ]
106 | },
107 | "execution_count": 54,
108 | "metadata": {},
109 | "output_type": "execute_result"
110 | }
111 | ],
112 | "source": [
113 | "plt.plot(x,y)"
114 | ]
115 | },
116 | {
117 | "cell_type": "code",
118 | "execution_count": 55,
119 | "metadata": {},
120 | "outputs": [
121 | {
122 | "data": {
123 | "text/plain": [
124 | ""
125 | ]
126 | },
127 | "execution_count": 55,
128 | "metadata": {},
129 | "output_type": "execute_result"
130 | }
131 | ],
132 | "source": [
133 | "plt.xlabel('x')"
134 | ]
135 | },
136 | {
137 | "cell_type": "code",
138 | "execution_count": 56,
139 | "metadata": {},
140 | "outputs": [
141 | {
142 | "data": {
143 | "image/png": "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\nJP3/uawAAAAASUVORK5CYII=\n",
144 | "text/plain": [
145 | ""
146 | ]
147 | },
148 | "metadata": {},
149 | "output_type": "display_data"
150 | }
151 | ],
152 | "source": [
153 | "plt.show()"
154 | ]
155 | }
156 | ],
157 | "metadata": {
158 | "kernelspec": {
159 | "display_name": "Python 2",
160 | "language": "python",
161 | "name": "python2"
162 | },
163 | "language_info": {
164 | "codemirror_mode": {
165 | "name": "ipython",
166 | "version": 2
167 | },
168 | "file_extension": ".py",
169 | "mimetype": "text/x-python",
170 | "name": "python",
171 | "nbconvert_exporter": "python",
172 | "pygments_lexer": "ipython2",
173 | "version": "2.7.13"
174 | }
175 | },
176 | "nbformat": 4,
177 | "nbformat_minor": 2
178 | }
179 |
--------------------------------------------------------------------------------
/1-Numpy基础.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "## Numpy基础"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "### 1 Numpy数组对象"
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 2,
20 | "metadata": {
21 | "collapsed": true
22 | },
23 | "outputs": [],
24 | "source": [
25 | "import numpy as np"
26 | ]
27 | },
28 | {
29 | "cell_type": "code",
30 | "execution_count": 3,
31 | "metadata": {
32 | "collapsed": true
33 | },
34 | "outputs": [],
35 | "source": [
36 | "a = np.arange(5)"
37 | ]
38 | },
39 | {
40 | "cell_type": "code",
41 | "execution_count": 4,
42 | "metadata": {},
43 | "outputs": [
44 | {
45 | "data": {
46 | "text/plain": [
47 | "array([0, 1, 2, 3, 4])"
48 | ]
49 | },
50 | "execution_count": 4,
51 | "metadata": {},
52 | "output_type": "execute_result"
53 | }
54 | ],
55 | "source": [
56 | "a"
57 | ]
58 | },
59 | {
60 | "cell_type": "code",
61 | "execution_count": 5,
62 | "metadata": {},
63 | "outputs": [
64 | {
65 | "data": {
66 | "text/plain": [
67 | "dtype('int64')"
68 | ]
69 | },
70 | "execution_count": 5,
71 | "metadata": {},
72 | "output_type": "execute_result"
73 | }
74 | ],
75 | "source": [
76 | "a.dtype"
77 | ]
78 | },
79 | {
80 | "cell_type": "code",
81 | "execution_count": 6,
82 | "metadata": {},
83 | "outputs": [
84 | {
85 | "data": {
86 | "text/plain": [
87 | "(5,)"
88 | ]
89 | },
90 | "execution_count": 6,
91 | "metadata": {},
92 | "output_type": "execute_result"
93 | }
94 | ],
95 | "source": [
96 | "a.shape"
97 | ]
98 | },
99 | {
100 | "cell_type": "markdown",
101 | "metadata": {},
102 | "source": [
103 | "### 2 创建多维数组"
104 | ]
105 | },
106 | {
107 | "cell_type": "code",
108 | "execution_count": 8,
109 | "metadata": {},
110 | "outputs": [],
111 | "source": [
112 | "m = np.array([np.arange(2),np.arange(2)])"
113 | ]
114 | },
115 | {
116 | "cell_type": "code",
117 | "execution_count": 9,
118 | "metadata": {},
119 | "outputs": [
120 | {
121 | "data": {
122 | "text/plain": [
123 | "array([[0, 1],\n",
124 | " [0, 1]])"
125 | ]
126 | },
127 | "execution_count": 9,
128 | "metadata": {},
129 | "output_type": "execute_result"
130 | }
131 | ],
132 | "source": [
133 | "m"
134 | ]
135 | },
136 | {
137 | "cell_type": "code",
138 | "execution_count": 10,
139 | "metadata": {},
140 | "outputs": [
141 | {
142 | "data": {
143 | "text/plain": [
144 | "(2, 2)"
145 | ]
146 | },
147 | "execution_count": 10,
148 | "metadata": {},
149 | "output_type": "execute_result"
150 | }
151 | ],
152 | "source": [
153 | "m.shape"
154 | ]
155 | },
156 | {
157 | "cell_type": "code",
158 | "execution_count": 11,
159 | "metadata": {},
160 | "outputs": [
161 | {
162 | "data": {
163 | "text/plain": [
164 | "0"
165 | ]
166 | },
167 | "execution_count": 11,
168 | "metadata": {},
169 | "output_type": "execute_result"
170 | }
171 | ],
172 | "source": [
173 | "m[0,0]"
174 | ]
175 | },
176 | {
177 | "cell_type": "markdown",
178 | "metadata": {},
179 | "source": [
180 | "每一种数据类型均有对应的类型转换函数,例如:"
181 | ]
182 | },
183 | {
184 | "cell_type": "code",
185 | "execution_count": 13,
186 | "metadata": {},
187 | "outputs": [
188 | {
189 | "data": {
190 | "text/plain": [
191 | "42.0"
192 | ]
193 | },
194 | "execution_count": 13,
195 | "metadata": {},
196 | "output_type": "execute_result"
197 | }
198 | ],
199 | "source": [
200 | "np.float64(42)"
201 | ]
202 | },
203 | {
204 | "cell_type": "markdown",
205 | "metadata": {},
206 | "source": [
207 | "### 3 数据类型对象"
208 | ]
209 | },
210 | {
211 | "cell_type": "markdown",
212 | "metadata": {},
213 | "source": [
214 | "Numpy数组中每个元素均为相同的数据类型"
215 | ]
216 | },
217 | {
218 | "cell_type": "code",
219 | "execution_count": 14,
220 | "metadata": {},
221 | "outputs": [
222 | {
223 | "data": {
224 | "text/plain": [
225 | "8"
226 | ]
227 | },
228 | "execution_count": 14,
229 | "metadata": {},
230 | "output_type": "execute_result"
231 | }
232 | ],
233 | "source": [
234 | "m.dtype.itemsize"
235 | ]
236 | },
237 | {
238 | "cell_type": "markdown",
239 | "metadata": {},
240 | "source": [
241 | "### 4 字符编码"
242 | ]
243 | },
244 | {
245 | "cell_type": "markdown",
246 | "metadata": {},
247 | "source": [
248 | "Numpy 可以使用字符编码来表示数据类型,例如f表示单精度浮点数"
249 | ]
250 | },
251 | {
252 | "cell_type": "code",
253 | "execution_count": 17,
254 | "metadata": {},
255 | "outputs": [
256 | {
257 | "data": {
258 | "text/plain": [
259 | "array([0., 1., 2., 3., 4., 5., 6.], dtype=float32)"
260 | ]
261 | },
262 | "execution_count": 17,
263 | "metadata": {},
264 | "output_type": "execute_result"
265 | }
266 | ],
267 | "source": [
268 | "np.arange(7,dtype='f')"
269 | ]
270 | },
271 | {
272 | "cell_type": "markdown",
273 | "metadata": {},
274 | "source": [
275 | "### 5 一维数组的索引和切片"
276 | ]
277 | },
278 | {
279 | "cell_type": "code",
280 | "execution_count": 20,
281 | "metadata": {
282 | "collapsed": true
283 | },
284 | "outputs": [],
285 | "source": [
286 | "a = np.arange(9)"
287 | ]
288 | },
289 | {
290 | "cell_type": "code",
291 | "execution_count": 21,
292 | "metadata": {},
293 | "outputs": [
294 | {
295 | "data": {
296 | "text/plain": [
297 | "array([0, 1, 2, 3, 4, 5, 6, 7, 8])"
298 | ]
299 | },
300 | "execution_count": 21,
301 | "metadata": {},
302 | "output_type": "execute_result"
303 | }
304 | ],
305 | "source": [
306 | "a"
307 | ]
308 | },
309 | {
310 | "cell_type": "code",
311 | "execution_count": 22,
312 | "metadata": {},
313 | "outputs": [
314 | {
315 | "data": {
316 | "text/plain": [
317 | "array([3, 4, 5, 6])"
318 | ]
319 | },
320 | "execution_count": 22,
321 | "metadata": {},
322 | "output_type": "execute_result"
323 | }
324 | ],
325 | "source": [
326 | "a[3:7]"
327 | ]
328 | },
329 | {
330 | "cell_type": "code",
331 | "execution_count": 23,
332 | "metadata": {},
333 | "outputs": [
334 | {
335 | "data": {
336 | "text/plain": [
337 | "array([8, 7, 6, 5, 4, 3, 2, 1, 0])"
338 | ]
339 | },
340 | "execution_count": 23,
341 | "metadata": {},
342 | "output_type": "execute_result"
343 | }
344 | ],
345 | "source": [
346 | "a[::-1]"
347 | ]
348 | },
349 | {
350 | "cell_type": "markdown",
351 | "metadata": {},
352 | "source": [
353 | "### 6 多维数组的索引和切片"
354 | ]
355 | },
356 | {
357 | "cell_type": "code",
358 | "execution_count": 24,
359 | "metadata": {
360 | "collapsed": true
361 | },
362 | "outputs": [],
363 | "source": [
364 | "b = np.arange(24).reshape(2,3,4)"
365 | ]
366 | },
367 | {
368 | "cell_type": "code",
369 | "execution_count": 25,
370 | "metadata": {},
371 | "outputs": [
372 | {
373 | "data": {
374 | "text/plain": [
375 | "array([[[ 0, 1, 2, 3],\n",
376 | " [ 4, 5, 6, 7],\n",
377 | " [ 8, 9, 10, 11]],\n",
378 | "\n",
379 | " [[12, 13, 14, 15],\n",
380 | " [16, 17, 18, 19],\n",
381 | " [20, 21, 22, 23]]])"
382 | ]
383 | },
384 | "execution_count": 25,
385 | "metadata": {},
386 | "output_type": "execute_result"
387 | }
388 | ],
389 | "source": [
390 | "b"
391 | ]
392 | },
393 | {
394 | "cell_type": "code",
395 | "execution_count": 26,
396 | "metadata": {},
397 | "outputs": [
398 | {
399 | "data": {
400 | "text/plain": [
401 | "0"
402 | ]
403 | },
404 | "execution_count": 26,
405 | "metadata": {},
406 | "output_type": "execute_result"
407 | }
408 | ],
409 | "source": [
410 | "b[0,0,0]"
411 | ]
412 | },
413 | {
414 | "cell_type": "code",
415 | "execution_count": 28,
416 | "metadata": {},
417 | "outputs": [
418 | {
419 | "data": {
420 | "text/plain": [
421 | "array([ 0, 12])"
422 | ]
423 | },
424 | "execution_count": 28,
425 | "metadata": {},
426 | "output_type": "execute_result"
427 | }
428 | ],
429 | "source": [
430 | "b[:,0,0]"
431 | ]
432 | },
433 | {
434 | "cell_type": "code",
435 | "execution_count": 29,
436 | "metadata": {},
437 | "outputs": [
438 | {
439 | "data": {
440 | "text/plain": [
441 | "array([[[ 0, 1, 2, 3],\n",
442 | " [ 4, 5, 6, 7],\n",
443 | " [ 8, 9, 10, 11]],\n",
444 | "\n",
445 | " [[12, 13, 14, 15],\n",
446 | " [16, 17, 18, 19],\n",
447 | " [20, 21, 22, 23]]])"
448 | ]
449 | },
450 | "execution_count": 29,
451 | "metadata": {},
452 | "output_type": "execute_result"
453 | }
454 | ],
455 | "source": [
456 | "b[:,...]"
457 | ]
458 | },
459 | {
460 | "cell_type": "markdown",
461 | "metadata": {},
462 | "source": [
463 | "### 7 改变数组的维度"
464 | ]
465 | },
466 | {
467 | "cell_type": "code",
468 | "execution_count": 30,
469 | "metadata": {},
470 | "outputs": [
471 | {
472 | "data": {
473 | "text/plain": [
474 | "array([[[ 0, 1, 2, 3],\n",
475 | " [ 4, 5, 6, 7],\n",
476 | " [ 8, 9, 10, 11]],\n",
477 | "\n",
478 | " [[12, 13, 14, 15],\n",
479 | " [16, 17, 18, 19],\n",
480 | " [20, 21, 22, 23]]])"
481 | ]
482 | },
483 | "execution_count": 30,
484 | "metadata": {},
485 | "output_type": "execute_result"
486 | }
487 | ],
488 | "source": [
489 | "b"
490 | ]
491 | },
492 | {
493 | "cell_type": "code",
494 | "execution_count": 31,
495 | "metadata": {},
496 | "outputs": [
497 | {
498 | "data": {
499 | "text/plain": [
500 | "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n",
501 | " 17, 18, 19, 20, 21, 22, 23])"
502 | ]
503 | },
504 | "execution_count": 31,
505 | "metadata": {},
506 | "output_type": "execute_result"
507 | }
508 | ],
509 | "source": [
510 | "b.ravel()"
511 | ]
512 | },
513 | {
514 | "cell_type": "code",
515 | "execution_count": 32,
516 | "metadata": {},
517 | "outputs": [
518 | {
519 | "data": {
520 | "text/plain": [
521 | "array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,\n",
522 | " 17, 18, 19, 20, 21, 22, 23])"
523 | ]
524 | },
525 | "execution_count": 32,
526 | "metadata": {},
527 | "output_type": "execute_result"
528 | }
529 | ],
530 | "source": [
531 | "b.flatten()"
532 | ]
533 | },
534 | {
535 | "cell_type": "code",
536 | "execution_count": 33,
537 | "metadata": {},
538 | "outputs": [
539 | {
540 | "data": {
541 | "text/plain": [
542 | "(2, 3, 4)"
543 | ]
544 | },
545 | "execution_count": 33,
546 | "metadata": {},
547 | "output_type": "execute_result"
548 | }
549 | ],
550 | "source": [
551 | "b.shape"
552 | ]
553 | },
554 | {
555 | "cell_type": "code",
556 | "execution_count": 34,
557 | "metadata": {},
558 | "outputs": [
559 | {
560 | "data": {
561 | "text/plain": [
562 | "array([[[ 0, 1, 2, 3],\n",
563 | " [ 4, 5, 6, 7],\n",
564 | " [ 8, 9, 10, 11]],\n",
565 | "\n",
566 | " [[12, 13, 14, 15],\n",
567 | " [16, 17, 18, 19],\n",
568 | " [20, 21, 22, 23]]])"
569 | ]
570 | },
571 | "execution_count": 34,
572 | "metadata": {},
573 | "output_type": "execute_result"
574 | }
575 | ],
576 | "source": [
577 | "b"
578 | ]
579 | },
580 | {
581 | "cell_type": "code",
582 | "execution_count": 35,
583 | "metadata": {},
584 | "outputs": [
585 | {
586 | "data": {
587 | "text/plain": [
588 | "array([[[ 0, 12],\n",
589 | " [ 4, 16],\n",
590 | " [ 8, 20]],\n",
591 | "\n",
592 | " [[ 1, 13],\n",
593 | " [ 5, 17],\n",
594 | " [ 9, 21]],\n",
595 | "\n",
596 | " [[ 2, 14],\n",
597 | " [ 6, 18],\n",
598 | " [10, 22]],\n",
599 | "\n",
600 | " [[ 3, 15],\n",
601 | " [ 7, 19],\n",
602 | " [11, 23]]])"
603 | ]
604 | },
605 | "execution_count": 35,
606 | "metadata": {},
607 | "output_type": "execute_result"
608 | }
609 | ],
610 | "source": [
611 | "b.transpose()"
612 | ]
613 | },
614 | {
615 | "cell_type": "markdown",
616 | "metadata": {},
617 | "source": [
618 | "resize 会直接修改数组,而其他的操作会不会受到影响"
619 | ]
620 | },
621 | {
622 | "cell_type": "code",
623 | "execution_count": 36,
624 | "metadata": {
625 | "collapsed": true
626 | },
627 | "outputs": [],
628 | "source": [
629 | "b.resize((2,12))"
630 | ]
631 | },
632 | {
633 | "cell_type": "code",
634 | "execution_count": 37,
635 | "metadata": {},
636 | "outputs": [
637 | {
638 | "data": {
639 | "text/plain": [
640 | "array([[ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11],\n",
641 | " [12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23]])"
642 | ]
643 | },
644 | "execution_count": 37,
645 | "metadata": {},
646 | "output_type": "execute_result"
647 | }
648 | ],
649 | "source": [
650 | "b"
651 | ]
652 | },
653 | {
654 | "cell_type": "markdown",
655 | "metadata": {},
656 | "source": [
657 | "### 8 数组组合"
658 | ]
659 | },
660 | {
661 | "cell_type": "markdown",
662 | "metadata": {},
663 | "source": [
664 | "Numpy 数组组合有水平组合,垂直组合和深度组合等多种组合方式,我们将使用vstack,dstack,hstack,column_stack,row_stack以及concatenate函数来完成数组的组合"
665 | ]
666 | },
667 | {
668 | "cell_type": "code",
669 | "execution_count": 38,
670 | "metadata": {
671 | "collapsed": true
672 | },
673 | "outputs": [],
674 | "source": [
675 | "a = np.arange(9).reshape(3,3)"
676 | ]
677 | },
678 | {
679 | "cell_type": "code",
680 | "execution_count": 39,
681 | "metadata": {
682 | "collapsed": true
683 | },
684 | "outputs": [],
685 | "source": [
686 | "b = 2*a"
687 | ]
688 | },
689 | {
690 | "cell_type": "code",
691 | "execution_count": 40,
692 | "metadata": {},
693 | "outputs": [
694 | {
695 | "data": {
696 | "text/plain": [
697 | "array([[0, 1, 2],\n",
698 | " [3, 4, 5],\n",
699 | " [6, 7, 8]])"
700 | ]
701 | },
702 | "execution_count": 40,
703 | "metadata": {},
704 | "output_type": "execute_result"
705 | }
706 | ],
707 | "source": [
708 | "a"
709 | ]
710 | },
711 | {
712 | "cell_type": "code",
713 | "execution_count": 41,
714 | "metadata": {},
715 | "outputs": [
716 | {
717 | "data": {
718 | "text/plain": [
719 | "array([[ 0, 2, 4],\n",
720 | " [ 6, 8, 10],\n",
721 | " [12, 14, 16]])"
722 | ]
723 | },
724 | "execution_count": 41,
725 | "metadata": {},
726 | "output_type": "execute_result"
727 | }
728 | ],
729 | "source": [
730 | "b"
731 | ]
732 | },
733 | {
734 | "cell_type": "code",
735 | "execution_count": 43,
736 | "metadata": {},
737 | "outputs": [
738 | {
739 | "data": {
740 | "text/plain": [
741 | "array([[ 0, 1, 2, 0, 2, 4],\n",
742 | " [ 3, 4, 5, 6, 8, 10],\n",
743 | " [ 6, 7, 8, 12, 14, 16]])"
744 | ]
745 | },
746 | "execution_count": 43,
747 | "metadata": {},
748 | "output_type": "execute_result"
749 | }
750 | ],
751 | "source": [
752 | "np.hstack((a,b))"
753 | ]
754 | },
755 | {
756 | "cell_type": "code",
757 | "execution_count": 44,
758 | "metadata": {},
759 | "outputs": [
760 | {
761 | "data": {
762 | "text/plain": [
763 | "array([[ 0, 1, 2, 0, 2, 4],\n",
764 | " [ 3, 4, 5, 6, 8, 10],\n",
765 | " [ 6, 7, 8, 12, 14, 16]])"
766 | ]
767 | },
768 | "execution_count": 44,
769 | "metadata": {},
770 | "output_type": "execute_result"
771 | }
772 | ],
773 | "source": [
774 | "np.concatenate((a,b),axis=1)"
775 | ]
776 | },
777 | {
778 | "cell_type": "code",
779 | "execution_count": 45,
780 | "metadata": {},
781 | "outputs": [
782 | {
783 | "data": {
784 | "text/plain": [
785 | "array([[ 0, 1, 2],\n",
786 | " [ 3, 4, 5],\n",
787 | " [ 6, 7, 8],\n",
788 | " [ 0, 2, 4],\n",
789 | " [ 6, 8, 10],\n",
790 | " [12, 14, 16]])"
791 | ]
792 | },
793 | "execution_count": 45,
794 | "metadata": {},
795 | "output_type": "execute_result"
796 | }
797 | ],
798 | "source": [
799 | "np.vstack((a,b))"
800 | ]
801 | },
802 | {
803 | "cell_type": "code",
804 | "execution_count": 46,
805 | "metadata": {},
806 | "outputs": [
807 | {
808 | "data": {
809 | "text/plain": [
810 | "array([[ 0, 1, 2],\n",
811 | " [ 3, 4, 5],\n",
812 | " [ 6, 7, 8],\n",
813 | " [ 0, 2, 4],\n",
814 | " [ 6, 8, 10],\n",
815 | " [12, 14, 16]])"
816 | ]
817 | },
818 | "execution_count": 46,
819 | "metadata": {},
820 | "output_type": "execute_result"
821 | }
822 | ],
823 | "source": [
824 | "np.concatenate((a,b),axis = 0)"
825 | ]
826 | },
827 | {
828 | "cell_type": "code",
829 | "execution_count": 48,
830 | "metadata": {},
831 | "outputs": [
832 | {
833 | "data": {
834 | "text/plain": [
835 | "(3, 3)"
836 | ]
837 | },
838 | "execution_count": 48,
839 | "metadata": {},
840 | "output_type": "execute_result"
841 | }
842 | ],
843 | "source": [
844 | "a.shape"
845 | ]
846 | },
847 | {
848 | "cell_type": "code",
849 | "execution_count": 49,
850 | "metadata": {},
851 | "outputs": [
852 | {
853 | "data": {
854 | "text/plain": [
855 | "(3, 3)"
856 | ]
857 | },
858 | "execution_count": 49,
859 | "metadata": {},
860 | "output_type": "execute_result"
861 | }
862 | ],
863 | "source": [
864 | "b.shape"
865 | ]
866 | },
867 | {
868 | "cell_type": "code",
869 | "execution_count": 47,
870 | "metadata": {},
871 | "outputs": [
872 | {
873 | "data": {
874 | "text/plain": [
875 | "array([[[ 0, 0],\n",
876 | " [ 1, 2],\n",
877 | " [ 2, 4]],\n",
878 | "\n",
879 | " [[ 3, 6],\n",
880 | " [ 4, 8],\n",
881 | " [ 5, 10]],\n",
882 | "\n",
883 | " [[ 6, 12],\n",
884 | " [ 7, 14],\n",
885 | " [ 8, 16]]])"
886 | ]
887 | },
888 | "execution_count": 47,
889 | "metadata": {},
890 | "output_type": "execute_result"
891 | }
892 | ],
893 | "source": [
894 | "np.dstack((a,b))"
895 | ]
896 | },
897 | {
898 | "cell_type": "code",
899 | "execution_count": 50,
900 | "metadata": {},
901 | "outputs": [
902 | {
903 | "data": {
904 | "text/plain": [
905 | "(3, 3, 2)"
906 | ]
907 | },
908 | "execution_count": 50,
909 | "metadata": {},
910 | "output_type": "execute_result"
911 | }
912 | ],
913 | "source": [
914 | "np.dstack((a,b)).shape"
915 | ]
916 | },
917 | {
918 | "cell_type": "code",
919 | "execution_count": 51,
920 | "metadata": {
921 | "collapsed": true
922 | },
923 | "outputs": [],
924 | "source": [
925 | "oned = np.arange(2)"
926 | ]
927 | },
928 | {
929 | "cell_type": "code",
930 | "execution_count": 52,
931 | "metadata": {
932 | "collapsed": true
933 | },
934 | "outputs": [],
935 | "source": [
936 | "twice_oned = 2*oned"
937 | ]
938 | },
939 | {
940 | "cell_type": "code",
941 | "execution_count": 53,
942 | "metadata": {},
943 | "outputs": [
944 | {
945 | "data": {
946 | "text/plain": [
947 | "array([0, 1])"
948 | ]
949 | },
950 | "execution_count": 53,
951 | "metadata": {},
952 | "output_type": "execute_result"
953 | }
954 | ],
955 | "source": [
956 | "oned"
957 | ]
958 | },
959 | {
960 | "cell_type": "code",
961 | "execution_count": 54,
962 | "metadata": {},
963 | "outputs": [
964 | {
965 | "data": {
966 | "text/plain": [
967 | "array([0, 2])"
968 | ]
969 | },
970 | "execution_count": 54,
971 | "metadata": {},
972 | "output_type": "execute_result"
973 | }
974 | ],
975 | "source": [
976 | "twice_oned"
977 | ]
978 | },
979 | {
980 | "cell_type": "code",
981 | "execution_count": 56,
982 | "metadata": {},
983 | "outputs": [
984 | {
985 | "data": {
986 | "text/plain": [
987 | "array([[0, 0],\n",
988 | " [1, 2]])"
989 | ]
990 | },
991 | "execution_count": 56,
992 | "metadata": {},
993 | "output_type": "execute_result"
994 | }
995 | ],
996 | "source": [
997 | "np.column_stack((oned,twice_oned))"
998 | ]
999 | },
1000 | {
1001 | "cell_type": "markdown",
1002 | "metadata": {},
1003 | "source": [
1004 | "### 9 数组的分割"
1005 | ]
1006 | },
1007 | {
1008 | "cell_type": "markdown",
1009 | "metadata": {},
1010 | "source": [
1011 | "Numpy数组可以进行水平,垂直或深度分割,相关的函数有hsplit,vsplit,dsplit和split.我们可以将数组分割成相同大小的子数组,也可以指定原数组中需要分割的位置."
1012 | ]
1013 | },
1014 | {
1015 | "cell_type": "code",
1016 | "execution_count": 57,
1017 | "metadata": {},
1018 | "outputs": [
1019 | {
1020 | "data": {
1021 | "text/plain": [
1022 | "array([[0, 1, 2],\n",
1023 | " [3, 4, 5],\n",
1024 | " [6, 7, 8]])"
1025 | ]
1026 | },
1027 | "execution_count": 57,
1028 | "metadata": {},
1029 | "output_type": "execute_result"
1030 | }
1031 | ],
1032 | "source": [
1033 | "a"
1034 | ]
1035 | },
1036 | {
1037 | "cell_type": "code",
1038 | "execution_count": 58,
1039 | "metadata": {},
1040 | "outputs": [
1041 | {
1042 | "data": {
1043 | "text/plain": [
1044 | "[array([[0],\n",
1045 | " [3],\n",
1046 | " [6]]), array([[1],\n",
1047 | " [4],\n",
1048 | " [7]]), array([[2],\n",
1049 | " [5],\n",
1050 | " [8]])]"
1051 | ]
1052 | },
1053 | "execution_count": 58,
1054 | "metadata": {},
1055 | "output_type": "execute_result"
1056 | }
1057 | ],
1058 | "source": [
1059 | "np.hsplit(a,3)"
1060 | ]
1061 | },
1062 | {
1063 | "cell_type": "code",
1064 | "execution_count": 59,
1065 | "metadata": {},
1066 | "outputs": [
1067 | {
1068 | "data": {
1069 | "text/plain": [
1070 | "[array([[0, 1, 2]]), array([[3, 4, 5]]), array([[6, 7, 8]])]"
1071 | ]
1072 | },
1073 | "execution_count": 59,
1074 | "metadata": {},
1075 | "output_type": "execute_result"
1076 | }
1077 | ],
1078 | "source": [
1079 | "np.vsplit(a,3)"
1080 | ]
1081 | },
1082 | {
1083 | "cell_type": "markdown",
1084 | "metadata": {},
1085 | "source": [
1086 | "### 10 数组的属性"
1087 | ]
1088 | },
1089 | {
1090 | "cell_type": "code",
1091 | "execution_count": 60,
1092 | "metadata": {},
1093 | "outputs": [
1094 | {
1095 | "data": {
1096 | "text/plain": [
1097 | "2"
1098 | ]
1099 | },
1100 | "execution_count": 60,
1101 | "metadata": {},
1102 | "output_type": "execute_result"
1103 | }
1104 | ],
1105 | "source": [
1106 | "a.ndim"
1107 | ]
1108 | },
1109 | {
1110 | "cell_type": "code",
1111 | "execution_count": 61,
1112 | "metadata": {},
1113 | "outputs": [
1114 | {
1115 | "data": {
1116 | "text/plain": [
1117 | "9"
1118 | ]
1119 | },
1120 | "execution_count": 61,
1121 | "metadata": {},
1122 | "output_type": "execute_result"
1123 | }
1124 | ],
1125 | "source": [
1126 | "a.size"
1127 | ]
1128 | },
1129 | {
1130 | "cell_type": "code",
1131 | "execution_count": 62,
1132 | "metadata": {},
1133 | "outputs": [
1134 | {
1135 | "data": {
1136 | "text/plain": [
1137 | "8"
1138 | ]
1139 | },
1140 | "execution_count": 62,
1141 | "metadata": {},
1142 | "output_type": "execute_result"
1143 | }
1144 | ],
1145 | "source": [
1146 | "a.itemsize"
1147 | ]
1148 | },
1149 | {
1150 | "cell_type": "code",
1151 | "execution_count": 63,
1152 | "metadata": {},
1153 | "outputs": [
1154 | {
1155 | "data": {
1156 | "text/plain": [
1157 | "72"
1158 | ]
1159 | },
1160 | "execution_count": 63,
1161 | "metadata": {},
1162 | "output_type": "execute_result"
1163 | }
1164 | ],
1165 | "source": [
1166 | "a.nbytes"
1167 | ]
1168 | },
1169 | {
1170 | "cell_type": "code",
1171 | "execution_count": 64,
1172 | "metadata": {},
1173 | "outputs": [
1174 | {
1175 | "data": {
1176 | "text/plain": [
1177 | "array([[0, 3, 6],\n",
1178 | " [1, 4, 7],\n",
1179 | " [2, 5, 8]])"
1180 | ]
1181 | },
1182 | "execution_count": 64,
1183 | "metadata": {},
1184 | "output_type": "execute_result"
1185 | }
1186 | ],
1187 | "source": [
1188 | "a.T"
1189 | ]
1190 | },
1191 | {
1192 | "cell_type": "markdown",
1193 | "metadata": {},
1194 | "source": [
1195 | "### 11 数组的转换"
1196 | ]
1197 | },
1198 | {
1199 | "cell_type": "markdown",
1200 | "metadata": {},
1201 | "source": [
1202 | "可以使用tolist函数将Numpy数组转换成Python列表"
1203 | ]
1204 | },
1205 | {
1206 | "cell_type": "code",
1207 | "execution_count": 65,
1208 | "metadata": {},
1209 | "outputs": [
1210 | {
1211 | "data": {
1212 | "text/plain": [
1213 | "[[0, 1, 2], [3, 4, 5], [6, 7, 8]]"
1214 | ]
1215 | },
1216 | "execution_count": 65,
1217 | "metadata": {},
1218 | "output_type": "execute_result"
1219 | }
1220 | ],
1221 | "source": [
1222 | "a.tolist()"
1223 | ]
1224 | },
1225 | {
1226 | "cell_type": "markdown",
1227 | "metadata": {},
1228 | "source": [
1229 | "astype函数可以在转换数组时指定数据类型"
1230 | ]
1231 | },
1232 | {
1233 | "cell_type": "code",
1234 | "execution_count": 66,
1235 | "metadata": {},
1236 | "outputs": [
1237 | {
1238 | "data": {
1239 | "text/plain": [
1240 | "array([[0, 1, 2],\n",
1241 | " [3, 4, 5],\n",
1242 | " [6, 7, 8]], dtype=int32)"
1243 | ]
1244 | },
1245 | "execution_count": 66,
1246 | "metadata": {},
1247 | "output_type": "execute_result"
1248 | }
1249 | ],
1250 | "source": [
1251 | "a.astype(np.int32)"
1252 | ]
1253 | },
1254 | {
1255 | "cell_type": "code",
1256 | "execution_count": null,
1257 | "metadata": {
1258 | "collapsed": true
1259 | },
1260 | "outputs": [],
1261 | "source": []
1262 | }
1263 | ],
1264 | "metadata": {
1265 | "kernelspec": {
1266 | "display_name": "Python 2",
1267 | "language": "python",
1268 | "name": "python2"
1269 | },
1270 | "language_info": {
1271 | "codemirror_mode": {
1272 | "name": "ipython",
1273 | "version": 2
1274 | },
1275 | "file_extension": ".py",
1276 | "mimetype": "text/x-python",
1277 | "name": "python",
1278 | "nbconvert_exporter": "python",
1279 | "pygments_lexer": "ipython2",
1280 | "version": "2.7.13"
1281 | }
1282 | },
1283 | "nbformat": 4,
1284 | "nbformat_minor": 2
1285 | }
1286 |
--------------------------------------------------------------------------------
/2-常用函数.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "## 常用函数"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "### 1 文件读写 "
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 2,
20 | "metadata": {},
21 | "outputs": [],
22 | "source": [
23 | "import numpy as np"
24 | ]
25 | },
26 | {
27 | "cell_type": "code",
28 | "execution_count": 4,
29 | "metadata": {
30 | "collapsed": true
31 | },
32 | "outputs": [],
33 | "source": [
34 | "i2 = np.eye(2)"
35 | ]
36 | },
37 | {
38 | "cell_type": "code",
39 | "execution_count": 5,
40 | "metadata": {},
41 | "outputs": [
42 | {
43 | "data": {
44 | "text/plain": [
45 | "array([[1., 0.],\n",
46 | " [0., 1.]])"
47 | ]
48 | },
49 | "execution_count": 5,
50 | "metadata": {},
51 | "output_type": "execute_result"
52 | }
53 | ],
54 | "source": [
55 | "i2"
56 | ]
57 | },
58 | {
59 | "cell_type": "code",
60 | "execution_count": 6,
61 | "metadata": {},
62 | "outputs": [
63 | {
64 | "data": {
65 | "text/plain": [
66 | "dtype('float64')"
67 | ]
68 | },
69 | "execution_count": 6,
70 | "metadata": {},
71 | "output_type": "execute_result"
72 | }
73 | ],
74 | "source": [
75 | "i2.dtype"
76 | ]
77 | },
78 | {
79 | "cell_type": "code",
80 | "execution_count": 7,
81 | "metadata": {
82 | "collapsed": true
83 | },
84 | "outputs": [],
85 | "source": [
86 | "np.savetxt('eye.txt',i2)"
87 | ]
88 | },
89 | {
90 | "cell_type": "markdown",
91 | "metadata": {},
92 | "source": [
93 | "### 2 CSV文件读写"
94 | ]
95 | },
96 | {
97 | "cell_type": "markdown",
98 | "metadata": {},
99 | "source": [
100 | "可以看到,使用逗号分隔符,usecols指定了特定的列,unpack表示将选择的列拆分成多个数据,分别接收"
101 | ]
102 | },
103 | {
104 | "cell_type": "code",
105 | "execution_count": 8,
106 | "metadata": {
107 | "collapsed": true
108 | },
109 | "outputs": [],
110 | "source": [
111 | "c,v = np.loadtxt('data.csv',delimiter=',',usecols=(6,7),unpack = True)"
112 | ]
113 | },
114 | {
115 | "cell_type": "code",
116 | "execution_count": 9,
117 | "metadata": {},
118 | "outputs": [
119 | {
120 | "data": {
121 | "text/plain": [
122 | "336.1"
123 | ]
124 | },
125 | "execution_count": 9,
126 | "metadata": {},
127 | "output_type": "execute_result"
128 | }
129 | ],
130 | "source": [
131 | "c"
132 | ]
133 | },
134 | {
135 | "cell_type": "code",
136 | "execution_count": 10,
137 | "metadata": {},
138 | "outputs": [
139 | {
140 | "data": {
141 | "text/plain": [
142 | "21144800.0"
143 | ]
144 | },
145 | "execution_count": 10,
146 | "metadata": {},
147 | "output_type": "execute_result"
148 | }
149 | ],
150 | "source": [
151 | "v"
152 | ]
153 | },
154 | {
155 | "cell_type": "markdown",
156 | "metadata": {},
157 | "source": [
158 | "### 3 成交量加权平均价格(VWAP)"
159 | ]
160 | },
161 | {
162 | "cell_type": "code",
163 | "execution_count": 11,
164 | "metadata": {
165 | "collapsed": true
166 | },
167 | "outputs": [],
168 | "source": [
169 | "vwap = np.average(c,weights =v)"
170 | ]
171 | },
172 | {
173 | "cell_type": "code",
174 | "execution_count": 12,
175 | "metadata": {},
176 | "outputs": [
177 | {
178 | "data": {
179 | "text/plain": [
180 | "336.1"
181 | ]
182 | },
183 | "execution_count": 12,
184 | "metadata": {},
185 | "output_type": "execute_result"
186 | }
187 | ],
188 | "source": [
189 | "vwap"
190 | ]
191 | },
192 | {
193 | "cell_type": "code",
194 | "execution_count": 13,
195 | "metadata": {
196 | "collapsed": true
197 | },
198 | "outputs": [],
199 | "source": [
200 | "mean = np.mean(c)"
201 | ]
202 | },
203 | {
204 | "cell_type": "code",
205 | "execution_count": 14,
206 | "metadata": {},
207 | "outputs": [
208 | {
209 | "data": {
210 | "text/plain": [
211 | "336.1"
212 | ]
213 | },
214 | "execution_count": 14,
215 | "metadata": {},
216 | "output_type": "execute_result"
217 | }
218 | ],
219 | "source": [
220 | "mean"
221 | ]
222 | },
223 | {
224 | "cell_type": "markdown",
225 | "metadata": {},
226 | "source": [
227 | "### 4 取值范围"
228 | ]
229 | },
230 | {
231 | "cell_type": "code",
232 | "execution_count": 15,
233 | "metadata": {
234 | "collapsed": true
235 | },
236 | "outputs": [],
237 | "source": [
238 | "h,l = np.loadtxt('data.csv',delimiter=',',usecols =(4,5),unpack = True)"
239 | ]
240 | },
241 | {
242 | "cell_type": "code",
243 | "execution_count": 18,
244 | "metadata": {},
245 | "outputs": [
246 | {
247 | "data": {
248 | "text/plain": [
249 | "344.4"
250 | ]
251 | },
252 | "execution_count": 18,
253 | "metadata": {},
254 | "output_type": "execute_result"
255 | }
256 | ],
257 | "source": [
258 | "h"
259 | ]
260 | },
261 | {
262 | "cell_type": "code",
263 | "execution_count": 19,
264 | "metadata": {},
265 | "outputs": [
266 | {
267 | "data": {
268 | "text/plain": [
269 | "333.53"
270 | ]
271 | },
272 | "execution_count": 19,
273 | "metadata": {},
274 | "output_type": "execute_result"
275 | }
276 | ],
277 | "source": [
278 | "l"
279 | ]
280 | },
281 | {
282 | "cell_type": "code",
283 | "execution_count": 20,
284 | "metadata": {},
285 | "outputs": [
286 | {
287 | "data": {
288 | "text/plain": [
289 | "344.4"
290 | ]
291 | },
292 | "execution_count": 20,
293 | "metadata": {},
294 | "output_type": "execute_result"
295 | }
296 | ],
297 | "source": [
298 | "np.max(h)"
299 | ]
300 | },
301 | {
302 | "cell_type": "code",
303 | "execution_count": 21,
304 | "metadata": {},
305 | "outputs": [
306 | {
307 | "data": {
308 | "text/plain": [
309 | "333.53"
310 | ]
311 | },
312 | "execution_count": 21,
313 | "metadata": {},
314 | "output_type": "execute_result"
315 | }
316 | ],
317 | "source": [
318 | "np.min(l)"
319 | ]
320 | },
321 | {
322 | "cell_type": "code",
323 | "execution_count": 22,
324 | "metadata": {},
325 | "outputs": [
326 | {
327 | "data": {
328 | "text/plain": [
329 | "0.0"
330 | ]
331 | },
332 | "execution_count": 22,
333 | "metadata": {},
334 | "output_type": "execute_result"
335 | }
336 | ],
337 | "source": [
338 | "np.ptp(h)"
339 | ]
340 | },
341 | {
342 | "cell_type": "code",
343 | "execution_count": 23,
344 | "metadata": {
345 | "collapsed": true
346 | },
347 | "outputs": [],
348 | "source": [
349 | "median = np.median(c)"
350 | ]
351 | },
352 | {
353 | "cell_type": "code",
354 | "execution_count": 24,
355 | "metadata": {},
356 | "outputs": [
357 | {
358 | "data": {
359 | "text/plain": [
360 | "336.1"
361 | ]
362 | },
363 | "execution_count": 24,
364 | "metadata": {},
365 | "output_type": "execute_result"
366 | }
367 | ],
368 | "source": [
369 | "median"
370 | ]
371 | },
372 | {
373 | "cell_type": "code",
374 | "execution_count": 25,
375 | "metadata": {
376 | "collapsed": true
377 | },
378 | "outputs": [],
379 | "source": [
380 | "a = np.random.randn(10)"
381 | ]
382 | },
383 | {
384 | "cell_type": "code",
385 | "execution_count": 26,
386 | "metadata": {},
387 | "outputs": [
388 | {
389 | "data": {
390 | "text/plain": [
391 | "array([-0.91366364, 0.56874779, 1.93163306, -1.20680229, 0.61898735,\n",
392 | " -0.03009919, 1.0977881 , -1.69915867, -0.54960063, -0.38438985])"
393 | ]
394 | },
395 | "execution_count": 26,
396 | "metadata": {},
397 | "output_type": "execute_result"
398 | }
399 | ],
400 | "source": [
401 | "a"
402 | ]
403 | },
404 | {
405 | "cell_type": "code",
406 | "execution_count": 27,
407 | "metadata": {
408 | "collapsed": true
409 | },
410 | "outputs": [],
411 | "source": [
412 | "sorted_close = np.msort(a)"
413 | ]
414 | },
415 | {
416 | "cell_type": "code",
417 | "execution_count": 28,
418 | "metadata": {},
419 | "outputs": [
420 | {
421 | "data": {
422 | "text/plain": [
423 | "array([-1.69915867, -1.20680229, -0.91366364, -0.54960063, -0.38438985,\n",
424 | " -0.03009919, 0.56874779, 0.61898735, 1.0977881 , 1.93163306])"
425 | ]
426 | },
427 | "execution_count": 28,
428 | "metadata": {},
429 | "output_type": "execute_result"
430 | }
431 | ],
432 | "source": [
433 | "sorted_close"
434 | ]
435 | },
436 | {
437 | "cell_type": "code",
438 | "execution_count": 29,
439 | "metadata": {},
440 | "outputs": [
441 | {
442 | "data": {
443 | "text/plain": [
444 | "-0.20724452344036656"
445 | ]
446 | },
447 | "execution_count": 29,
448 | "metadata": {},
449 | "output_type": "execute_result"
450 | }
451 | ],
452 | "source": [
453 | "np.median(a)"
454 | ]
455 | },
456 | {
457 | "cell_type": "code",
458 | "execution_count": 30,
459 | "metadata": {},
460 | "outputs": [
461 | {
462 | "data": {
463 | "text/plain": [
464 | "-0.05665579774572808"
465 | ]
466 | },
467 | "execution_count": 30,
468 | "metadata": {},
469 | "output_type": "execute_result"
470 | }
471 | ],
472 | "source": [
473 | "np.mean(a)"
474 | ]
475 | },
476 | {
477 | "cell_type": "code",
478 | "execution_count": 31,
479 | "metadata": {},
480 | "outputs": [
481 | {
482 | "data": {
483 | "text/plain": [
484 | "1.123988115028372"
485 | ]
486 | },
487 | "execution_count": 31,
488 | "metadata": {},
489 | "output_type": "execute_result"
490 | }
491 | ],
492 | "source": [
493 | "np.var(a)"
494 | ]
495 | },
496 | {
497 | "cell_type": "code",
498 | "execution_count": 32,
499 | "metadata": {},
500 | "outputs": [
501 | {
502 | "data": {
503 | "text/plain": [
504 | "array([ 1.48241142, 1.36288528, -3.13843535, 1.82578963, -0.64908654,\n",
505 | " 1.1278873 , -2.79694677, 1.14955804, 0.16521078])"
506 | ]
507 | },
508 | "execution_count": 32,
509 | "metadata": {},
510 | "output_type": "execute_result"
511 | }
512 | ],
513 | "source": [
514 | "np.diff(a)"
515 | ]
516 | },
517 | {
518 | "cell_type": "code",
519 | "execution_count": 33,
520 | "metadata": {},
521 | "outputs": [
522 | {
523 | "data": {
524 | "text/plain": [
525 | "array([-0.91366364, 0.56874779, 1.93163306, -1.20680229, 0.61898735,\n",
526 | " -0.03009919, 1.0977881 , -1.69915867, -0.54960063, -0.38438985])"
527 | ]
528 | },
529 | "execution_count": 33,
530 | "metadata": {},
531 | "output_type": "execute_result"
532 | }
533 | ],
534 | "source": [
535 | "a"
536 | ]
537 | },
538 | {
539 | "cell_type": "code",
540 | "execution_count": 35,
541 | "metadata": {},
542 | "outputs": [],
543 | "source": [
544 | "returns = np.diff(a)/a[:-1]"
545 | ]
546 | },
547 | {
548 | "cell_type": "code",
549 | "execution_count": 36,
550 | "metadata": {},
551 | "outputs": [
552 | {
553 | "data": {
554 | "text/plain": [
555 | "array([ -1.62249143, 2.39629113, -1.62475752, -1.51291529,\n",
556 | " -1.04862651, -37.47234271, -2.54780204, -0.67654543,\n",
557 | " -0.30060151])"
558 | ]
559 | },
560 | "execution_count": 36,
561 | "metadata": {},
562 | "output_type": "execute_result"
563 | }
564 | ],
565 | "source": [
566 | "returns"
567 | ]
568 | },
569 | {
570 | "cell_type": "code",
571 | "execution_count": 37,
572 | "metadata": {},
573 | "outputs": [
574 | {
575 | "data": {
576 | "text/plain": [
577 | "11.57815124733535"
578 | ]
579 | },
580 | "execution_count": 37,
581 | "metadata": {},
582 | "output_type": "execute_result"
583 | }
584 | ],
585 | "source": [
586 | "np.std(returns)"
587 | ]
588 | },
589 | {
590 | "cell_type": "code",
591 | "execution_count": 38,
592 | "metadata": {},
593 | "outputs": [
594 | {
595 | "data": {
596 | "text/plain": [
597 | "(array([1]),)"
598 | ]
599 | },
600 | "execution_count": 38,
601 | "metadata": {},
602 | "output_type": "execute_result"
603 | }
604 | ],
605 | "source": [
606 | "np.where(returns>0)"
607 | ]
608 | },
609 | {
610 | "cell_type": "code",
611 | "execution_count": 39,
612 | "metadata": {},
613 | "outputs": [
614 | {
615 | "data": {
616 | "text/plain": [
617 | "0.0"
618 | ]
619 | },
620 | "execution_count": 39,
621 | "metadata": {},
622 | "output_type": "execute_result"
623 | }
624 | ],
625 | "source": [
626 | "np.sqrt(1/12)"
627 | ]
628 | },
629 | {
630 | "cell_type": "code",
631 | "execution_count": 40,
632 | "metadata": {},
633 | "outputs": [
634 | {
635 | "data": {
636 | "text/plain": [
637 | "0.28867513459481287"
638 | ]
639 | },
640 | "execution_count": 40,
641 | "metadata": {},
642 | "output_type": "execute_result"
643 | }
644 | ],
645 | "source": [
646 | "np.sqrt (1./12)"
647 | ]
648 | },
649 | {
650 | "cell_type": "code",
651 | "execution_count": 41,
652 | "metadata": {
653 | "collapsed": true
654 | },
655 | "outputs": [],
656 | "source": [
657 | "a = np.arange(10)"
658 | ]
659 | },
660 | {
661 | "cell_type": "code",
662 | "execution_count": 42,
663 | "metadata": {
664 | "collapsed": true
665 | },
666 | "outputs": [],
667 | "source": [
668 | "indices = np.where(a>5)"
669 | ]
670 | },
671 | {
672 | "cell_type": "code",
673 | "execution_count": 43,
674 | "metadata": {},
675 | "outputs": [
676 | {
677 | "data": {
678 | "text/plain": [
679 | "array([[6, 7, 8, 9]])"
680 | ]
681 | },
682 | "execution_count": 43,
683 | "metadata": {},
684 | "output_type": "execute_result"
685 | }
686 | ],
687 | "source": [
688 | "np.take(a,indices)"
689 | ]
690 | },
691 | {
692 | "cell_type": "code",
693 | "execution_count": 44,
694 | "metadata": {},
695 | "outputs": [
696 | {
697 | "data": {
698 | "text/plain": [
699 | "0"
700 | ]
701 | },
702 | "execution_count": 44,
703 | "metadata": {},
704 | "output_type": "execute_result"
705 | }
706 | ],
707 | "source": [
708 | "np.argmin(a)"
709 | ]
710 | },
711 | {
712 | "cell_type": "code",
713 | "execution_count": 45,
714 | "metadata": {},
715 | "outputs": [
716 | {
717 | "data": {
718 | "text/plain": [
719 | "9"
720 | ]
721 | },
722 | "execution_count": 45,
723 | "metadata": {},
724 | "output_type": "execute_result"
725 | }
726 | ],
727 | "source": [
728 | "np.argmax(a)"
729 | ]
730 | },
731 | {
732 | "cell_type": "code",
733 | "execution_count": 46,
734 | "metadata": {},
735 | "outputs": [
736 | {
737 | "data": {
738 | "text/plain": [
739 | "array([1., 1., 1., 1., 1.])"
740 | ]
741 | },
742 | "execution_count": 46,
743 | "metadata": {},
744 | "output_type": "execute_result"
745 | }
746 | ],
747 | "source": [
748 | "np.ones(5)"
749 | ]
750 | },
751 | {
752 | "cell_type": "code",
753 | "execution_count": 47,
754 | "metadata": {
755 | "collapsed": true
756 | },
757 | "outputs": [],
758 | "source": [
759 | "a = np.ones(10)"
760 | ]
761 | },
762 | {
763 | "cell_type": "code",
764 | "execution_count": 48,
765 | "metadata": {
766 | "collapsed": true
767 | },
768 | "outputs": [],
769 | "source": [
770 | "a.fill(5)"
771 | ]
772 | },
773 | {
774 | "cell_type": "code",
775 | "execution_count": 49,
776 | "metadata": {},
777 | "outputs": [
778 | {
779 | "data": {
780 | "text/plain": [
781 | "array([5., 5., 5., 5., 5., 5., 5., 5., 5., 5.])"
782 | ]
783 | },
784 | "execution_count": 49,
785 | "metadata": {},
786 | "output_type": "execute_result"
787 | }
788 | ],
789 | "source": [
790 | "a"
791 | ]
792 | },
793 | {
794 | "cell_type": "code",
795 | "execution_count": 51,
796 | "metadata": {},
797 | "outputs": [
798 | {
799 | "data": {
800 | "text/plain": [
801 | "array([[1, 1, 1],\n",
802 | " [1, 1, 1]], dtype=int32)"
803 | ]
804 | },
805 | "execution_count": 51,
806 | "metadata": {},
807 | "output_type": "execute_result"
808 | }
809 | ],
810 | "source": [
811 | "np.ones(shape=(2,3),dtype = np.int32)"
812 | ]
813 | },
814 | {
815 | "cell_type": "markdown",
816 | "metadata": {},
817 | "source": [
818 | "np.dot 如果处理的是一维数据,那么就是点积,如果处理二维数据,就是矩阵的乘积"
819 | ]
820 | },
821 | {
822 | "cell_type": "code",
823 | "execution_count": 52,
824 | "metadata": {
825 | "collapsed": true
826 | },
827 | "outputs": [],
828 | "source": [
829 | "a = np.arange(9)"
830 | ]
831 | },
832 | {
833 | "cell_type": "code",
834 | "execution_count": 53,
835 | "metadata": {
836 | "collapsed": true
837 | },
838 | "outputs": [],
839 | "source": [
840 | "b = np.arange(9)"
841 | ]
842 | },
843 | {
844 | "cell_type": "code",
845 | "execution_count": 54,
846 | "metadata": {},
847 | "outputs": [
848 | {
849 | "data": {
850 | "text/plain": [
851 | "204"
852 | ]
853 | },
854 | "execution_count": 54,
855 | "metadata": {},
856 | "output_type": "execute_result"
857 | }
858 | ],
859 | "source": [
860 | "np.dot(a,b)"
861 | ]
862 | },
863 | {
864 | "cell_type": "code",
865 | "execution_count": 56,
866 | "metadata": {},
867 | "outputs": [],
868 | "source": [
869 | "a = a.reshape(3,3)"
870 | ]
871 | },
872 | {
873 | "cell_type": "code",
874 | "execution_count": 57,
875 | "metadata": {},
876 | "outputs": [
877 | {
878 | "data": {
879 | "text/plain": [
880 | "array([[0, 1, 2],\n",
881 | " [3, 4, 5],\n",
882 | " [6, 7, 8]])"
883 | ]
884 | },
885 | "execution_count": 57,
886 | "metadata": {},
887 | "output_type": "execute_result"
888 | }
889 | ],
890 | "source": [
891 | "a"
892 | ]
893 | },
894 | {
895 | "cell_type": "code",
896 | "execution_count": 58,
897 | "metadata": {
898 | "collapsed": true
899 | },
900 | "outputs": [],
901 | "source": [
902 | "b = b.reshape(3,3)"
903 | ]
904 | },
905 | {
906 | "cell_type": "code",
907 | "execution_count": 59,
908 | "metadata": {},
909 | "outputs": [
910 | {
911 | "data": {
912 | "text/plain": [
913 | "array([[ 15, 18, 21],\n",
914 | " [ 42, 54, 66],\n",
915 | " [ 69, 90, 111]])"
916 | ]
917 | },
918 | "execution_count": 59,
919 | "metadata": {},
920 | "output_type": "execute_result"
921 | }
922 | ],
923 | "source": [
924 | "np.dot(a,b)"
925 | ]
926 | },
927 | {
928 | "cell_type": "code",
929 | "execution_count": 60,
930 | "metadata": {},
931 | "outputs": [
932 | {
933 | "data": {
934 | "text/plain": [
935 | "array([[3, 3, 3],\n",
936 | " [3, 4, 5],\n",
937 | " [6, 6, 6]])"
938 | ]
939 | },
940 | "execution_count": 60,
941 | "metadata": {},
942 | "output_type": "execute_result"
943 | }
944 | ],
945 | "source": [
946 | "b.clip(3,6)"
947 | ]
948 | },
949 | {
950 | "cell_type": "code",
951 | "execution_count": 62,
952 | "metadata": {},
953 | "outputs": [],
954 | "source": [
955 | "a = np.arange(9)"
956 | ]
957 | },
958 | {
959 | "cell_type": "code",
960 | "execution_count": 63,
961 | "metadata": {},
962 | "outputs": [
963 | {
964 | "data": {
965 | "text/plain": [
966 | "array([3, 4, 5, 6, 7, 8])"
967 | ]
968 | },
969 | "execution_count": 63,
970 | "metadata": {},
971 | "output_type": "execute_result"
972 | }
973 | ],
974 | "source": [
975 | "a.compress(a>2)"
976 | ]
977 | },
978 | {
979 | "cell_type": "code",
980 | "execution_count": 65,
981 | "metadata": {},
982 | "outputs": [],
983 | "source": [
984 | "a = np.arange(1,9)"
985 | ]
986 | },
987 | {
988 | "cell_type": "code",
989 | "execution_count": 66,
990 | "metadata": {},
991 | "outputs": [
992 | {
993 | "data": {
994 | "text/plain": [
995 | "40320"
996 | ]
997 | },
998 | "execution_count": 66,
999 | "metadata": {},
1000 | "output_type": "execute_result"
1001 | }
1002 | ],
1003 | "source": [
1004 | "a.prod()"
1005 | ]
1006 | },
1007 | {
1008 | "cell_type": "code",
1009 | "execution_count": 67,
1010 | "metadata": {},
1011 | "outputs": [
1012 | {
1013 | "data": {
1014 | "text/plain": [
1015 | "array([ 1, 2, 6, 24, 120, 720, 5040, 40320])"
1016 | ]
1017 | },
1018 | "execution_count": 67,
1019 | "metadata": {},
1020 | "output_type": "execute_result"
1021 | }
1022 | ],
1023 | "source": [
1024 | "a.cumprod()"
1025 | ]
1026 | }
1027 | ],
1028 | "metadata": {
1029 | "kernelspec": {
1030 | "display_name": "Python 2",
1031 | "language": "python",
1032 | "name": "python2"
1033 | },
1034 | "language_info": {
1035 | "codemirror_mode": {
1036 | "name": "ipython",
1037 | "version": 2
1038 | },
1039 | "file_extension": ".py",
1040 | "mimetype": "text/x-python",
1041 | "name": "python",
1042 | "nbconvert_exporter": "python",
1043 | "pygments_lexer": "ipython2",
1044 | "version": "2.7.13"
1045 | }
1046 | },
1047 | "nbformat": 4,
1048 | "nbformat_minor": 2
1049 | }
1050 |
--------------------------------------------------------------------------------
/3-便捷函数.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "## 便捷函数"
8 | ]
9 | },
10 | {
11 | "cell_type": "markdown",
12 | "metadata": {},
13 | "source": [
14 | "### 1 常用函数"
15 | ]
16 | },
17 | {
18 | "cell_type": "code",
19 | "execution_count": 2,
20 | "metadata": {},
21 | "outputs": [],
22 | "source": [
23 | "import numpy as np"
24 | ]
25 | },
26 | {
27 | "cell_type": "code",
28 | "execution_count": 3,
29 | "metadata": {
30 | "collapsed": true
31 | },
32 | "outputs": [],
33 | "source": [
34 | "a = np.arange(-5,5)"
35 | ]
36 | },
37 | {
38 | "cell_type": "code",
39 | "execution_count": 9,
40 | "metadata": {},
41 | "outputs": [],
42 | "source": [
43 | "signs = np.sign(a)"
44 | ]
45 | },
46 | {
47 | "cell_type": "code",
48 | "execution_count": 10,
49 | "metadata": {},
50 | "outputs": [],
51 | "source": [
52 | "piecewises = np.piecewise(a,[a>0,a<0],[1,-1])"
53 | ]
54 | },
55 | {
56 | "cell_type": "code",
57 | "execution_count": 12,
58 | "metadata": {},
59 | "outputs": [
60 | {
61 | "data": {
62 | "text/plain": [
63 | "True"
64 | ]
65 | },
66 | "execution_count": 12,
67 | "metadata": {},
68 | "output_type": "execute_result"
69 | }
70 | ],
71 | "source": [
72 | "np.array_equal(signs,piecewises)"
73 | ]
74 | },
75 | {
76 | "cell_type": "markdown",
77 | "metadata": {},
78 | "source": [
79 | "### 2 创建矩阵"
80 | ]
81 | },
82 | {
83 | "cell_type": "code",
84 | "execution_count": 13,
85 | "metadata": {
86 | "collapsed": true
87 | },
88 | "outputs": [],
89 | "source": [
90 | "A = np.mat('1 2 3; 4 5 6; 7 8 9')"
91 | ]
92 | },
93 | {
94 | "cell_type": "code",
95 | "execution_count": 14,
96 | "metadata": {},
97 | "outputs": [
98 | {
99 | "data": {
100 | "text/plain": [
101 | "matrix([[1, 2, 3],\n",
102 | " [4, 5, 6],\n",
103 | " [7, 8, 9]])"
104 | ]
105 | },
106 | "execution_count": 14,
107 | "metadata": {},
108 | "output_type": "execute_result"
109 | }
110 | ],
111 | "source": [
112 | "A"
113 | ]
114 | },
115 | {
116 | "cell_type": "code",
117 | "execution_count": 15,
118 | "metadata": {},
119 | "outputs": [
120 | {
121 | "data": {
122 | "text/plain": [
123 | "matrix([[1, 4, 7],\n",
124 | " [2, 5, 8],\n",
125 | " [3, 6, 9]])"
126 | ]
127 | },
128 | "execution_count": 15,
129 | "metadata": {},
130 | "output_type": "execute_result"
131 | }
132 | ],
133 | "source": [
134 | "A.T"
135 | ]
136 | },
137 | {
138 | "cell_type": "code",
139 | "execution_count": 19,
140 | "metadata": {},
141 | "outputs": [],
142 | "source": [
143 | "A = np.eye(2)"
144 | ]
145 | },
146 | {
147 | "cell_type": "code",
148 | "execution_count": 20,
149 | "metadata": {},
150 | "outputs": [
151 | {
152 | "data": {
153 | "text/plain": [
154 | "array([[1., 0.],\n",
155 | " [0., 1.]])"
156 | ]
157 | },
158 | "execution_count": 20,
159 | "metadata": {},
160 | "output_type": "execute_result"
161 | }
162 | ],
163 | "source": [
164 | "A"
165 | ]
166 | },
167 | {
168 | "cell_type": "code",
169 | "execution_count": 21,
170 | "metadata": {
171 | "collapsed": true
172 | },
173 | "outputs": [],
174 | "source": [
175 | "B = 2*A"
176 | ]
177 | },
178 | {
179 | "cell_type": "code",
180 | "execution_count": 22,
181 | "metadata": {},
182 | "outputs": [
183 | {
184 | "data": {
185 | "text/plain": [
186 | "array([[2., 0.],\n",
187 | " [0., 2.]])"
188 | ]
189 | },
190 | "execution_count": 22,
191 | "metadata": {},
192 | "output_type": "execute_result"
193 | }
194 | ],
195 | "source": [
196 | "B"
197 | ]
198 | },
199 | {
200 | "cell_type": "code",
201 | "execution_count": 23,
202 | "metadata": {},
203 | "outputs": [
204 | {
205 | "data": {
206 | "text/plain": [
207 | "matrix([[1., 0., 2., 0.],\n",
208 | " [0., 1., 0., 2.],\n",
209 | " [1., 0., 2., 0.],\n",
210 | " [0., 1., 0., 2.]])"
211 | ]
212 | },
213 | "execution_count": 23,
214 | "metadata": {},
215 | "output_type": "execute_result"
216 | }
217 | ],
218 | "source": [
219 | "np.bmat('A B;A B')"
220 | ]
221 | },
222 | {
223 | "cell_type": "markdown",
224 | "metadata": {},
225 | "source": [
226 | "### 3 通用函数"
227 | ]
228 | },
229 | {
230 | "cell_type": "markdown",
231 | "metadata": {},
232 | "source": [
233 | "通用函数的输入是一组标量,输出也是一组标量,他们通常可以对应于基本数学运算,如加减乘除"
234 | ]
235 | },
236 | {
237 | "cell_type": "code",
238 | "execution_count": 24,
239 | "metadata": {
240 | "collapsed": true
241 | },
242 | "outputs": [],
243 | "source": [
244 | "def ultimate_answer(a):\n",
245 | " return np.zeros_like(a)"
246 | ]
247 | },
248 | {
249 | "cell_type": "code",
250 | "execution_count": 25,
251 | "metadata": {
252 | "collapsed": true
253 | },
254 | "outputs": [],
255 | "source": [
256 | "a = np.eye(3)"
257 | ]
258 | },
259 | {
260 | "cell_type": "code",
261 | "execution_count": 26,
262 | "metadata": {},
263 | "outputs": [
264 | {
265 | "data": {
266 | "text/plain": [
267 | "array([[0., 0., 0.],\n",
268 | " [0., 0., 0.],\n",
269 | " [0., 0., 0.]])"
270 | ]
271 | },
272 | "execution_count": 26,
273 | "metadata": {},
274 | "output_type": "execute_result"
275 | }
276 | ],
277 | "source": [
278 | "ultimate_answer(a)"
279 | ]
280 | },
281 | {
282 | "cell_type": "code",
283 | "execution_count": 27,
284 | "metadata": {},
285 | "outputs": [
286 | {
287 | "data": {
288 | "text/plain": [
289 | ""
290 | ]
291 | },
292 | "execution_count": 27,
293 | "metadata": {},
294 | "output_type": "execute_result"
295 | }
296 | ],
297 | "source": [
298 | "a.flat"
299 | ]
300 | },
301 | {
302 | "cell_type": "code",
303 | "execution_count": 28,
304 | "metadata": {},
305 | "outputs": [
306 | {
307 | "data": {
308 | "text/plain": [
309 | "[1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0]"
310 | ]
311 | },
312 | "execution_count": 28,
313 | "metadata": {},
314 | "output_type": "execute_result"
315 | }
316 | ],
317 | "source": [
318 | "list(a.flat)"
319 | ]
320 | },
321 | {
322 | "cell_type": "code",
323 | "execution_count": 29,
324 | "metadata": {
325 | "collapsed": true
326 | },
327 | "outputs": [],
328 | "source": [
329 | "a = np.arange(9)"
330 | ]
331 | },
332 | {
333 | "cell_type": "code",
334 | "execution_count": 30,
335 | "metadata": {},
336 | "outputs": [
337 | {
338 | "data": {
339 | "text/plain": [
340 | "36"
341 | ]
342 | },
343 | "execution_count": 30,
344 | "metadata": {},
345 | "output_type": "execute_result"
346 | }
347 | ],
348 | "source": [
349 | "np.add.reduce(a)"
350 | ]
351 | },
352 | {
353 | "cell_type": "code",
354 | "execution_count": 31,
355 | "metadata": {},
356 | "outputs": [
357 | {
358 | "data": {
359 | "text/plain": [
360 | "array([ 0, 1, 3, 6, 10, 15, 21, 28, 36])"
361 | ]
362 | },
363 | "execution_count": 31,
364 | "metadata": {},
365 | "output_type": "execute_result"
366 | }
367 | ],
368 | "source": [
369 | "np.add.accumulate(a)"
370 | ]
371 | },
372 | {
373 | "cell_type": "markdown",
374 | "metadata": {},
375 | "source": [
376 | "### 4 算术运算"
377 | ]
378 | },
379 | {
380 | "cell_type": "code",
381 | "execution_count": 32,
382 | "metadata": {
383 | "collapsed": true
384 | },
385 | "outputs": [],
386 | "source": [
387 | "a = np.array([2,6,5])\n",
388 | "b = np.array([1,2,3])"
389 | ]
390 | },
391 | {
392 | "cell_type": "code",
393 | "execution_count": 33,
394 | "metadata": {},
395 | "outputs": [
396 | {
397 | "data": {
398 | "text/plain": [
399 | "array([2, 3, 1])"
400 | ]
401 | },
402 | "execution_count": 33,
403 | "metadata": {},
404 | "output_type": "execute_result"
405 | }
406 | ],
407 | "source": [
408 | "np.divide(a,b)"
409 | ]
410 | },
411 | {
412 | "cell_type": "code",
413 | "execution_count": 34,
414 | "metadata": {},
415 | "outputs": [
416 | {
417 | "data": {
418 | "text/plain": [
419 | "array([0, 0, 0])"
420 | ]
421 | },
422 | "execution_count": 34,
423 | "metadata": {},
424 | "output_type": "execute_result"
425 | }
426 | ],
427 | "source": [
428 | "np.divide(b,a)"
429 | ]
430 | },
431 | {
432 | "cell_type": "code",
433 | "execution_count": 35,
434 | "metadata": {},
435 | "outputs": [
436 | {
437 | "data": {
438 | "text/plain": [
439 | "array([2. , 3. , 1.66666667])"
440 | ]
441 | },
442 | "execution_count": 35,
443 | "metadata": {},
444 | "output_type": "execute_result"
445 | }
446 | ],
447 | "source": [
448 | "np.true_divide(a,b)"
449 | ]
450 | },
451 | {
452 | "cell_type": "code",
453 | "execution_count": 36,
454 | "metadata": {},
455 | "outputs": [
456 | {
457 | "data": {
458 | "text/plain": [
459 | "array([0.5 , 0.33333333, 0.6 ])"
460 | ]
461 | },
462 | "execution_count": 36,
463 | "metadata": {},
464 | "output_type": "execute_result"
465 | }
466 | ],
467 | "source": [
468 | "np.true_divide(b,a)"
469 | ]
470 | },
471 | {
472 | "cell_type": "code",
473 | "execution_count": 37,
474 | "metadata": {
475 | "collapsed": true
476 | },
477 | "outputs": [],
478 | "source": [
479 | "from __future__ import division"
480 | ]
481 | },
482 | {
483 | "cell_type": "code",
484 | "execution_count": 38,
485 | "metadata": {},
486 | "outputs": [
487 | {
488 | "data": {
489 | "text/plain": [
490 | "array([2. , 3. , 1.66666667])"
491 | ]
492 | },
493 | "execution_count": 38,
494 | "metadata": {},
495 | "output_type": "execute_result"
496 | }
497 | ],
498 | "source": [
499 | "a/b"
500 | ]
501 | },
502 | {
503 | "cell_type": "code",
504 | "execution_count": 39,
505 | "metadata": {},
506 | "outputs": [
507 | {
508 | "data": {
509 | "text/plain": [
510 | "array([2, 3, 1])"
511 | ]
512 | },
513 | "execution_count": 39,
514 | "metadata": {},
515 | "output_type": "execute_result"
516 | }
517 | ],
518 | "source": [
519 | "a//b"
520 | ]
521 | },
522 | {
523 | "cell_type": "code",
524 | "execution_count": 40,
525 | "metadata": {
526 | "collapsed": true
527 | },
528 | "outputs": [],
529 | "source": [
530 | "a = np.arange(-4,4)"
531 | ]
532 | },
533 | {
534 | "cell_type": "code",
535 | "execution_count": 41,
536 | "metadata": {},
537 | "outputs": [
538 | {
539 | "data": {
540 | "text/plain": [
541 | "array([-4, -3, -2, -1, 0, 1, 2, 3])"
542 | ]
543 | },
544 | "execution_count": 41,
545 | "metadata": {},
546 | "output_type": "execute_result"
547 | }
548 | ],
549 | "source": [
550 | "a"
551 | ]
552 | },
553 | {
554 | "cell_type": "code",
555 | "execution_count": 42,
556 | "metadata": {},
557 | "outputs": [
558 | {
559 | "data": {
560 | "text/plain": [
561 | "array([0, 1, 0, 1, 0, 1, 0, 1])"
562 | ]
563 | },
564 | "execution_count": 42,
565 | "metadata": {},
566 | "output_type": "execute_result"
567 | }
568 | ],
569 | "source": [
570 | "np.remainder(a,2)"
571 | ]
572 | },
573 | {
574 | "cell_type": "code",
575 | "execution_count": 43,
576 | "metadata": {},
577 | "outputs": [
578 | {
579 | "data": {
580 | "text/plain": [
581 | "array([0, 1, 0, 1, 0, 1, 0, 1])"
582 | ]
583 | },
584 | "execution_count": 43,
585 | "metadata": {},
586 | "output_type": "execute_result"
587 | }
588 | ],
589 | "source": [
590 | "np.mod(a,2)"
591 | ]
592 | },
593 | {
594 | "cell_type": "code",
595 | "execution_count": 44,
596 | "metadata": {},
597 | "outputs": [
598 | {
599 | "data": {
600 | "text/plain": [
601 | "array([0, 1, 0, 1, 0, 1, 0, 1])"
602 | ]
603 | },
604 | "execution_count": 44,
605 | "metadata": {},
606 | "output_type": "execute_result"
607 | }
608 | ],
609 | "source": [
610 | "a%2"
611 | ]
612 | },
613 | {
614 | "cell_type": "code",
615 | "execution_count": 45,
616 | "metadata": {},
617 | "outputs": [
618 | {
619 | "data": {
620 | "text/plain": [
621 | "array([ 0, -1, 0, -1, 0, 1, 0, 1])"
622 | ]
623 | },
624 | "execution_count": 45,
625 | "metadata": {},
626 | "output_type": "execute_result"
627 | }
628 | ],
629 | "source": [
630 | "np.fmod(a,2)"
631 | ]
632 | },
633 | {
634 | "cell_type": "code",
635 | "execution_count": 46,
636 | "metadata": {
637 | "collapsed": true
638 | },
639 | "outputs": [],
640 | "source": [
641 | "from matplotlib.pyplot import plot\n",
642 | "from matplotlib.pyplot import show"
643 | ]
644 | },
645 | {
646 | "cell_type": "code",
647 | "execution_count": 47,
648 | "metadata": {
649 | "collapsed": true
650 | },
651 | "outputs": [],
652 | "source": [
653 | "a = 1\n",
654 | "b =2"
655 | ]
656 | },
657 | {
658 | "cell_type": "code",
659 | "execution_count": 48,
660 | "metadata": {
661 | "collapsed": true
662 | },
663 | "outputs": [],
664 | "source": [
665 | "t = np.linspace(-np.pi,np.pi,201)"
666 | ]
667 | },
668 | {
669 | "cell_type": "code",
670 | "execution_count": 49,
671 | "metadata": {
672 | "collapsed": true
673 | },
674 | "outputs": [],
675 | "source": [
676 | "x = np.sin(a*t +np.pi/2)\n",
677 | "y = np.sin(b*t)"
678 | ]
679 | },
680 | {
681 | "cell_type": "code",
682 | "execution_count": 52,
683 | "metadata": {},
684 | "outputs": [
685 | {
686 | "data": {
687 | "text/plain": [
688 | "[]"
689 | ]
690 | },
691 | "execution_count": 52,
692 | "metadata": {},
693 | "output_type": "execute_result"
694 | }
695 | ],
696 | "source": [
697 | "plot(x)"
698 | ]
699 | },
700 | {
701 | "cell_type": "code",
702 | "execution_count": 53,
703 | "metadata": {},
704 | "outputs": [
705 | {
706 | "data": {
707 | "image/png": "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\n",
708 | "text/plain": [
709 | ""
710 | ]
711 | },
712 | "metadata": {},
713 | "output_type": "display_data"
714 | }
715 | ],
716 | "source": [
717 | "show()"
718 | ]
719 | }
720 | ],
721 | "metadata": {
722 | "kernelspec": {
723 | "display_name": "Python 2",
724 | "language": "python",
725 | "name": "python2"
726 | },
727 | "language_info": {
728 | "codemirror_mode": {
729 | "name": "ipython",
730 | "version": 2
731 | },
732 | "file_extension": ".py",
733 | "mimetype": "text/x-python",
734 | "name": "python",
735 | "nbconvert_exporter": "python",
736 | "pygments_lexer": "ipython2",
737 | "version": "2.7.13"
738 | }
739 | },
740 | "nbformat": 4,
741 | "nbformat_minor": 2
742 | }
743 |
--------------------------------------------------------------------------------
/5-质量控制.ipynb:
--------------------------------------------------------------------------------
1 | {
2 | "cells": [
3 | {
4 | "cell_type": "markdown",
5 | "metadata": {},
6 | "source": [
7 | "## 质量控制"
8 | ]
9 | },
10 | {
11 | "cell_type": "code",
12 | "execution_count": 47,
13 | "metadata": {
14 | "collapsed": true
15 | },
16 | "outputs": [],
17 | "source": [
18 | "import numpy as np"
19 | ]
20 | },
21 | {
22 | "cell_type": "code",
23 | "execution_count": 48,
24 | "metadata": {
25 | "collapsed": true
26 | },
27 | "outputs": [],
28 | "source": [
29 | "np.testing.assert_almost_equal(0.12345,0.12346,decimal=5)"
30 | ]
31 | },
32 | {
33 | "cell_type": "code",
34 | "execution_count": 49,
35 | "metadata": {},
36 | "outputs": [
37 | {
38 | "ename": "AssertionError",
39 | "evalue": "\nArrays are not almost equal to 6 decimals\n ACTUAL: 0.12345\n DESIRED: 0.12346",
40 | "output_type": "error",
41 | "traceback": [
42 | "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
43 | "\u001b[0;31mAssertionError\u001b[0m Traceback (most recent call last)",
44 | "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mnp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mtesting\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0massert_almost_equal\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m0.12345\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m0.12346\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mdecimal\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
45 | "\u001b[0;32m/home/xujun/anaconda2/lib/python2.7/site-packages/numpy/testing/nose_tools/utils.pyc\u001b[0m in \u001b[0;36massert_almost_equal\u001b[0;34m(actual, desired, decimal, err_msg, verbose)\u001b[0m\n\u001b[1;32m 579\u001b[0m \u001b[0;32mpass\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 580\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mabs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdesired\u001b[0m \u001b[0;34m-\u001b[0m \u001b[0mactual\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;34m>=\u001b[0m \u001b[0;36m1.5\u001b[0m \u001b[0;34m*\u001b[0m \u001b[0;36m10.0\u001b[0m\u001b[0;34m**\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0mdecimal\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 581\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mAssertionError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0m_build_err_msg\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 582\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 583\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
46 | "\u001b[0;31mAssertionError\u001b[0m: \nArrays are not almost equal to 6 decimals\n ACTUAL: 0.12345\n DESIRED: 0.12346"
47 | ]
48 | }
49 | ],
50 | "source": [
51 | "np.testing.assert_almost_equal(0.12345,0.12346,decimal=6)"
52 | ]
53 | },
54 | {
55 | "cell_type": "code",
56 | "execution_count": 50,
57 | "metadata": {},
58 | "outputs": [],
59 | "source": [
60 | "import matplotlib.pyplot as plt"
61 | ]
62 | },
63 | {
64 | "cell_type": "code",
65 | "execution_count": 51,
66 | "metadata": {
67 | "collapsed": true
68 | },
69 | "outputs": [],
70 | "source": [
71 | "func = np.poly1d(np.array([1,2,3,4]).astype(np.float32))"
72 | ]
73 | },
74 | {
75 | "cell_type": "code",
76 | "execution_count": 52,
77 | "metadata": {
78 | "collapsed": true
79 | },
80 | "outputs": [],
81 | "source": [
82 | "x = np.linspace(-10,10,30)"
83 | ]
84 | },
85 | {
86 | "cell_type": "code",
87 | "execution_count": 53,
88 | "metadata": {
89 | "collapsed": true
90 | },
91 | "outputs": [],
92 | "source": [
93 | "y = func(x)"
94 | ]
95 | },
96 | {
97 | "cell_type": "code",
98 | "execution_count": 54,
99 | "metadata": {},
100 | "outputs": [
101 | {
102 | "data": {
103 | "text/plain": [
104 | "[]"
105 | ]
106 | },
107 | "execution_count": 54,
108 | "metadata": {},
109 | "output_type": "execute_result"
110 | }
111 | ],
112 | "source": [
113 | "plt.plot(x,y)"
114 | ]
115 | },
116 | {
117 | "cell_type": "code",
118 | "execution_count": 55,
119 | "metadata": {},
120 | "outputs": [
121 | {
122 | "data": {
123 | "text/plain": [
124 | ""
125 | ]
126 | },
127 | "execution_count": 55,
128 | "metadata": {},
129 | "output_type": "execute_result"
130 | }
131 | ],
132 | "source": [
133 | "plt.xlabel('x')"
134 | ]
135 | },
136 | {
137 | "cell_type": "code",
138 | "execution_count": 56,
139 | "metadata": {},
140 | "outputs": [
141 | {
142 | "data": {
143 | "image/png": "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\nJP3/uawAAAAASUVORK5CYII=\n",
144 | "text/plain": [
145 | ""
146 | ]
147 | },
148 | "metadata": {},
149 | "output_type": "display_data"
150 | }
151 | ],
152 | "source": [
153 | "plt.show()"
154 | ]
155 | }
156 | ],
157 | "metadata": {
158 | "kernelspec": {
159 | "display_name": "Python 2",
160 | "language": "python",
161 | "name": "python2"
162 | },
163 | "language_info": {
164 | "codemirror_mode": {
165 | "name": "ipython",
166 | "version": 2
167 | },
168 | "file_extension": ".py",
169 | "mimetype": "text/x-python",
170 | "name": "python",
171 | "nbconvert_exporter": "python",
172 | "pygments_lexer": "ipython2",
173 | "version": "2.7.13"
174 | }
175 | },
176 | "nbformat": 4,
177 | "nbformat_minor": 2
178 | }
179 |
--------------------------------------------------------------------------------
/Python数据分析基础教程:NumPy学习指南(第2版).pdf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/open-nlp/numpy-tutorial/26d421b3eceeebfe9806e0baf5a908f16d0d8fd4/Python数据分析基础教程:NumPy学习指南(第2版).pdf
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # 最简单的numpy教程
2 |
--------------------------------------------------------------------------------
/data.csv:
--------------------------------------------------------------------------------
1 | AAPL,28-01-2011, ,344.17,344.4,333.53,336.1,21144800
--------------------------------------------------------------------------------
/eye.txt:
--------------------------------------------------------------------------------
1 | 1.000000000000000000e+00 0.000000000000000000e+00
2 | 0.000000000000000000e+00 1.000000000000000000e+00
3 |
--------------------------------------------------------------------------------