numpy 基础数值算法
scipy 科学计算
matplotlib 数据可视化
pandas 序列高级函数
Numerical Python,数值的Python,补充了Python语言所欠缺的数值计算能力。
Numpy是其它数据分析及机器学习库的底层库。
Numpy完全标准C语言实现,运行效率充分优化。
Numpy开源免费。
历史
1995年,Numeric,Python语言数值计算扩充。
2001年,Scipy->Numarray,多维数组运算。
2005年,Numeric+Numarray->Numpy。
2006年,Numpy脱离Scipy成为独立的项目。
代码简洁:减少Python代码中的循环。
底层实现:厚内核(C)+薄接口(Python),保证性能。
#numpy演示 import numpy as np ary = np.array([1, 2, 3, 4, 5, 6]) print(ary, type(ary)) print(ary + 10) print(ary * 3) print(ary + ary) """ [1 2 3 4 5 6] <class ‘numpy.ndarray‘> [11 12 13 14 15 16] [ 3 6 9 12 15 18] [ 2 4 6 8 10 12] """
内存中的ndarray对象
存储对目标数组的描述信息,如:dim count、dimensions、dtype、data等。
实际数据
完整的数组数据
将实际数据与元数据分开存放,一方面提高了内存空间的使用效率,另一方面减少对实际数据的访问频率,提高性能。
2.ndarray数组对象的特点
3.ndarray数组对象的创建
np.array(任何可被解释为Numpy数组的逻辑结构)
import numpy as np a = np.array([1, 2, 3, 4, 5, 6]) print(a) # [1 2 3 4 5 6]
np.arange(起始值(0),终止值,步长(1))
import numpy as np a = np.arange(0, 5, 1) print(a) # [0 1 2 3 4] b = np.arange(0, 10, 2) print(b) # [0 2 4 6 8]
np.zeros(数组元素个数, dtype=‘类型‘)
import numpy as np a = np.zeros(10) print(a) # [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.] b = np.zeros(10, dtype=‘float32‘) print(b) # [0. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
np.ones(数组元素个数, dtype=‘类型‘)
import numpy as np a = np.ones(10) print(a) # [1. 1. 1. 1. 1. 1. 1. 1. 1. 1.] b = np.ones((3, 3, 4), dtype=‘int32‘)#三页 三行 四列 print(b) """ [[[1 1 1 1] [1 1 1 1] [1 1 1 1]] [[1 1 1 1] [1 1 1 1] [1 1 1 1]] [[1 1 1 1] [1 1 1 1] [1 1 1 1]]] """ # 创建一个结构像b的数组 元素都为0 e = np.zeros_like(b) print(e) #创建5个五分之一的数组 print(np.ones(5)/5) # [0.2 0.2 0.2 0.2 0.2]
数组的维度:np.ndarray.shape
import numpy as np ary = np.array([1, 2, 3, 4, 5, 6]) print(type(ary), ary, ary.shape) # <class ‘numpy.ndarray‘> [1 2 3 4 5 6] (6,) #二维数组 ary = np.array([ [1,2,3,4], [5,6,7,8] ]) print(type(ary), ary, ary.shape) #<class ‘numpy.ndarray‘> [[1 2 3 4] [5 6 7 8]] (2, 4)
import numpy as np ary = np.array([1, 2, 3, 4, 5, 6]) print(type(ary), ary, ary.dtype) #<class ‘numpy.ndarray‘> [1 2 3 4 5 6] int64
#转换ary元素的类型 b = ary.astype(float) print(type(b), b, b.dtype) #<class ‘numpy.ndarray‘> [1. 2. 3. 4. 5. 6.] float64 #转换ary元素的类型 c = ary.astype(‘str‘) print(type(c), c, c.dtype) #<class ‘numpy.ndarray‘> [‘1‘ ‘2‘ ‘3‘ ‘4‘ ‘5‘ ‘6‘] <U21
import numpy as np # 维度 ary = np.arange(1, 7) print(ary, ary.shape) #[1 2 3 4 5 6] (6,) ary.shape = (2, 3) print(ary, ary.shape) """ [[1 2 3] [4 5 6]] (2, 3) """ # 元素的数据类型 print(ary, ary.dtype) """ [[1 2 3] [4 5 6]] int64 """ # ary.dtype = ‘int64‘ # print(ary, ary.dtype) ary = ary.astype(‘float64‘) print(ary, ary.dtype) """ [[1. 2. 3.] [4. 5. 6.]] float64 """
import numpy as np ary = np.array([ [1,2,3,4], [5,6,7,8] ]) #观察维度,size,len的区别 print(ary.shape, ary.size, len(ary)) # (2, 4) 8 2
数组元素索引(下标)
数组对象[..., 页号, 行号, 列号]
下标从0开始,到数组len-1结束。
import numpy as np a = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]]) print(a, a.shape) """ [[[1 2] [3 4]] [[5 6] [7 8]]] (2, 2, 2) 两页 两行 两列 """ print(a[0]) """ [[1 2] [3 4]] """ print(a[0][0]) #[1 2] print(a[0][0][0]) #1 print(a[0, 0, 0]) #1 for i in range(a.shape[0]): #循环页 for j in range(a.shape[1]): #循环行 for k in range(a.shape[2]): #循环列 print(a[i, j, k]) """ 1 2 3 4 5 6 7 8 """
原文:https://www.cnblogs.com/maplethefox/p/11437073.html