Python数据分析基础——Numpy tutorial

参考link  https://docs.scipy.org/doc/numpy-dev/user/quickstart.html

基础

Numpy主要用于处理多维数组,数组中元素通常是数字,索引值为自然数

在Numpy中,维度被称为axesaxes的总数为rank (秩)

(关于矩阵秩的概念,可以参考https://www.zhihu.com/question/21605094 与 

https://www.applysquare.com/topic-cn/78QfWkiPt/

Numpy的数组类称为 ndarray,别名array

(numpy.array与 array.array不同,后者只处理一维数组)

ndarray属性

1. ndim

返回数组的秩

2.shape

返回数组各个维度大小

3.size

数组所有元素总个数,与shape结果相等

4.dtype

数组元素类型

5.itemsize

字节表示的元素类型大小,与ndarray.dtype.itemsize相等

int32 -> 4 (32/8)  int64 -> 8 (64/8)

6.data

包含数组实际元素的缓存区,通常不使用

举例

 1 import numpy as np
 2 a=np.arange(15).reshape(3,5)
 3 print(a)
 4 
 5 out:
 6 array([[ 0,  1,  2,  3,  4],
 7        [ 5,  6,  7,  8,  9],
 8        [10, 11, 12, 13, 14]])
 9 
10 print(type(a))
11 print(a.shape)
12 print(a.ndim)
13 print(a.dtype.name)
14 print(a.item.size)
15 
16 out:
17 numpy.ndarray
18 (3,5)
19 2
20 'int32'
21 4

创建数组

 1 #将列表转换为array
 2 >>> import numpy as np
 3 >>> a = np.array([2,3,4])
 4 >>> a
 5 array([2, 3, 4])
 6 >>> a.dtype
 7 dtype('int32')
 8 >>> b = np.array([1.2, 3.5, 5.1])
 9 >>> b.dtype
10 dtype('float64')
11 
12 #创建二维数组array
13 >>> b = np.array([(1.5,2,3), (4,5,6)])
14 >>> b
15 array([[ 1.5,  2. ,  3. ],
16        [ 4. ,  5. ,  6. ]])
17 
18 #创建一维数组
19 >>> np.arange( 10, 30, 5 )
20 array([10, 15, 20, 25])
21 >>> np.arange( 0, 2, 0.3 )               
22 array([ 0. ,  0.3,  0.6,  0.9,  1.2,  1.5,  1.8])
23 
24 #使用linespace创建数组
25 >>> from numpy import pi
26 >>> np.linspace( 0, 2, 9 )         
27 array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
28 >>> x = np.linspace( 0, 2*pi, 100 )        
29 >>> f = np.sin(x)
 1 >>> b = np.arange(12).reshape(3,4)
 2 >>> b
 3 array([[ 0,  1,  2,  3],
 4        [ 4,  5,  6,  7],
 5        [ 8,  9, 10, 11]])
 6 >>>
 7 >>> b.sum(axis=0)                   # 按列求和
 8 array([12, 15, 18, 21])
 9 >>> b.sum(axis=1)                  # 按行求和
10 array([ 6, 22, 38])
11 >>> b.min(axis=1)                   # 每行最小值
12 array([0, 4, 8])
13 >>> b.cumsum(axis=1)            # 按列累积求和
14 array([[ 0,  1,  3,  6],
15        [ 4,  9, 15, 22],
16        [ 8, 17, 27, 38]])
 1 # 常用函数
 2 >>> B = np.arange(3)
 3 >>> B
 4 array([0, 1, 2])
 5 >>> np.exp(B)
 6 array([ 1.  ,  2.71828183,  7.3890561 ])
 7 >>> np.sqrt(B)
 8 array([ 0.  ,  1.  ,  1.41421356])
 9 >>> C = np.array([2., -1., 4.])
10 >>> np.add(B, C)
11 array([ 2.,  0.,  6.])
 1 # 索引、切片、迭代
 2 # 一维数组
 3 >>a=np.arange(10)**3
 4 >>print(a)
 5 array([  0,   1,   8,  27,  64, 125, 216, 343, 512, 729], dtype=int32)
 6 >>a[2]
 7 8
 8 >>a[2:5]
 9 array([ 8, 27, 64], dtype=int32)
10 >>a[:6:2]=-100
11 >>a
12 array([-10,   1, -10,  27, -10, 125, 216, 343, 512, 729], dtype=int32)
13 >>a[::-1]
14 array([729, 512, 343, 216, 125, -10,  27, -10,   1, -10], dtype=int32)
15 
16 #多维数组
17 >>> def f(x,y):
18 ...     return 10*x+y
19 ...
20 >>> b = np.fromfunction(f,(5,4),dtype=int)
21 >>> b
22 array([[ 0,  1,  2,  3],
23        [10, 11, 12, 13],
24        [20, 21, 22, 23],
25        [30, 31, 32, 33],
26        [40, 41, 42, 43]])
27 >>> b[2,3]
28 23
29 >>> b[0:5, 1]                       #第二列
30 array([ 1, 11, 21, 31, 41])
31 >>> b[ : ,1]                        #第二列
32 array([ 1, 11, 21, 31, 41])
33 >>> b[1:3, : ]                      #第二行、第三行
34 array([[10, 11, 12, 13],
35        [20, 21, 22, 23]])
36 >>b[-1]                             #相当于 b[-1,:],最后一行
37 array([40, 41, 42, 43])

 

posted @ 2018-04-06 20:20  飞鸟先森  阅读(307)  评论(0编辑  收藏  举报