numpy是python下的计算库,被非常广泛地应用,尤其是近来的深度学习的推广。在这篇文章中,将会介绍使用numpy进行一些最为基础的计算。
numpy vs scipy
numpy和scipy都可以进行运算,主要区别如下
最近比较热门的深度学习,比如在神经网络的算法,多维数组的使用是一个极为重要的场景。如果你熟悉tensorflow中的tensor的概念,你会非常清晰numpy的作用。所以熟悉numpy可以说是使用python进行深度学习入门的一个基础知识。
安装
1
2
3
4
5
6
7
|
liumiaocn:tmp liumiao$ pip install numpy collecting numpy downloading https: / / files.pythonhosted.org / packages / b6 / 5e / 4b2c794fb57a42e285d6e0fae0e9163773c5a6a6a7e1794967fc5d2168f2 / numpy - 1.14 . 5 - cp27 - cp27m - macosx_10_6_intel.macosx_10_9_intel.macosx_10_9_x86_64.macosx_10_10_intel.macosx_10_10_x86_64.whl ( 4.7mb ) 100 % |████████████████████████████████| 4.7mb 284kb / s installing collected packages: numpy successfully installed numpy - 1.14 . 5 liumiaocn:tmp liumiao$ |
确认
1
2
3
4
5
6
7
8
9
10
11
12
|
liumiaocn:tmp liumiao$ pip show numpy name: numpy version: 1.14 . 5 summary: numpy: array processing for numbers, strings, records, and objects. home - page: http: / / www.numpy.org author: travis e. oliphant et al. author - email: none license: bsd location: / usr / local / lib / python2. 7 / site - packages requires: required - by: liumiaocn:tmp liumiao$ |
使用
使用numpy的数组
使用如下例子简单来理解一下numpy的数组的使用:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
liumiaocn:tmp liumiao$ cat np - 1.py #!/usr/local/bin/python import numpy as np arr = [ 1 , 2 , 3 , 4 ] print ( "array arr: " , arr) np_arr = np.array(arr) print ( "numpy array: " , np_arr) print ( "doulbe calc : " , 2 * np_arr) print ( "ndim: " , np_arr.ndim) liumiaocn:tmp liumiao$ python np - 1.py ( 'array arr: ' , [ 1 , 2 , 3 , 4 ]) ( 'numpy array: ' , array([ 1 , 2 , 3 , 4 ])) ( 'doulbe calc : ' , array([ 2 , 4 , 6 , 8 ])) ( 'ndim: ' , 1 ) liumiaocn:tmp liumiao$ |
多维数组&ndim/shape
ndim在numpy中指的是数组的维度,如果是2维值则为2,在下面的例子中构造一个步进为2的等差数列,然后将其进行维度的转换同时输出数组的ndim和shape的值以辅助对于ndim和shape含义的理解。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
liumiaocn:tmp liumiao$ cat np - 2.py #!/usr/local/bin/python import numpy as np arithmetic = np.arange( 0 , 16 , 2 ) print (arithmetic) print ( "ndim: " ,arithmetic.ndim, " shape:" , arithmetic.shape) #resize to 2*4 2-dim array arithmetic.resize( 2 , 4 ) print (arithmetic) print ( "ndim: " ,arithmetic.ndim, " shape:" , arithmetic.shape) #resize to 2*2*2 3-dim array array = arithmetic.resize( 2 , 2 , 2 ) print (arithmetic) print ( "ndim: " ,arithmetic.ndim, " shape:" , arithmetic.shape) liumiaocn:tmp liumiao$ python np - 2.py [ 0 2 4 6 8 10 12 14 ] ( 'ndim: ' , 1 , ' shape:' , ( 8 ,)) [[ 0 2 4 6 ] [ 8 10 12 14 ]] ( 'ndim: ' , 2 , ' shape:' , ( 2 , 4 )) [[[ 0 2 ] [ 4 6 ]] [[ 8 10 ] [ 12 14 ]]] ( 'ndim: ' , 3 , ' shape:' , ( 2 , 2 , 2 )) liumiaocn:tmp liumiao$ |
另外也可以使用reshape进行维度的调整。
等差数列&等比数列
numpy和matlab写起来有很多函数基本一样,比如等比数列和等差数列可以使用linspace和logspace进行。
logspace缺省的时候指的是以10给底,但是可以通过指定base进行设定
1
2
3
4
5
6
7
8
9
10
11
|
liumiaocn:tmp liumiao$ cat np - 3.py #!/usr/local/bin/python import numpy as np print ( "np.linspace(1,4,4):" , np.linspace( 1 , 4 , 4 )) print ( "np.logspace(1,4,4):" , np.logspace( 1 , 4 , 4 )) print ( "np.logspace(1,4,4,base=2):" ,np.logspace( 1 , 4 , 4 ,base = 2 )) liumiaocn:tmp liumiao$ python np - 3.py ( 'np.linspace(1,4,4):' , array([ 1. , 2. , 3. , 4. ])) ( 'np.logspace(1,4,4):' , array([ 10. , 100. , 1000. , 10000. ])) ( 'np.logspace(1,4,4,base=2):' , array([ 2. , 4. , 8. , 16. ])) liumiaocn:tmp liumiao$ |
数组初始化
numpy提供了很方便的初始化的函数,比如
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
liumiaocn:tmp liumiao$ cat np - 4.py #!/usr/local/bin/python import numpy as np print ( "np.zeros(6):" ,np.zeros( 6 )) print ( "np.zeros((2,3)):" ,np.zeros(( 2 , 3 ))) print ( "np.ones(6):" ,np.ones( 6 )) print ( "np.ones((2,3)):" ,np.ones(( 2 , 3 ))) print ( "np.random.random(6):" ,np.random.random( 6 )) print ( "np.random.random(6):" ,np.random.random( 6 )) print ( "np.random.random((2,3)):" ,np.random.random(( 2 , 3 ))) print ( "np.random.seed(1234)" ) np.random.seed( 1234 ) print ( "np.random.random(6):" ,np.random.random( 6 )) print ( "np.random.seed(1234)" ) np.random.seed( 1234 ) print ( "np.random.random(6):" ,np.random.random( 6 )) liumiaocn:tmp liumiao$ python np - 4.py ( 'np.zeros(6):' , array([ 0. , 0. , 0. , 0. , 0. , 0. ])) ( 'np.zeros((2,3)):' , array([[ 0. , 0. , 0. ], [ 0. , 0. , 0. ]])) ( 'np.ones(6):' , array([ 1. , 1. , 1. , 1. , 1. , 1. ])) ( 'np.ones((2,3)):' , array([[ 1. , 1. , 1. ], [ 1. , 1. , 1. ]])) ( 'np.random.random(6):' , array([ 0.06909968 , 0.27468844 , 0.59127996 , 0.56973602 , 0.45985047 , 0.95384945 ])) ( 'np.random.random(6):' , array([ 0.62996648 , 0.2824114 , 0.2698051 , 0.09262053 , 0.50862503 , 0.96600255 ])) ( 'np.random.random((2,3)):' , array([[ 0.66880129 , 0.8834006 , 0.49458989 ], [ 0.28335563 , 0.65711274 , 0.76726504 ]])) np.random.seed( 1234 ) ( 'np.random.random(6):' , array([ 0.19151945 , 0.62210877 , 0.43772774 , 0.78535858 , 0.77997581 , 0.27259261 ])) np.random.seed( 1234 ) ( 'np.random.random(6):' , array([ 0.19151945 , 0.62210877 , 0.43772774 , 0.78535858 , 0.77997581 , 0.27259261 ])) liumiaocn:tmp liumiao$ |
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对服务器之家的支持。如果你想了解更多相关内容请查看下面相关链接
原文链接:https://blog.csdn.net/liumiaocn/article/details/80728029