numpy的学习,可以不需要使用Anaconda,不过为了测试jupter notebook,这里也进行一下安装。后面的程序,还是写在pycharm中。
一:简介
1.说明
python的扩展库,支持高效的多数组与矩阵计算,也提供了大量的数学函数库。
科学计算比较高效。
2.打开jupyter notebook
二:基础ndarray
1.说明
numpy最重要的就是N维数组对象,该对象是一个快速灵活的大数据集合容器。
构造函数
numpy.array(object, dtype = None, copy = True, order = None, subok = False, ndmin = 0)
2.创建程序
import numpy as np ## 将python中的list转换成ndarray a = [1,2,3,4,5] print(type(1)) A = np.array(a) print(A) print(type(A)) ## 直接生成ndarray b = np.array([2,3,4]) print(type(b)) c = np.array([[1,2,3],[4,5,6]]) print(c) print(type(c)) print(c.ndim) # 几维度 ## 指定维度创建ndarray,指定dtype d = np.array([1,2,3,4,5], ndmin = 3, dtype=np.float32) print(d)
3.数据类型说明
numpy支持比python更多的数据类型
语法构造函数:
numpy.dtype(object, align, copy)
- object - 要转换为的数据类型对象
- align - 如果为 true,填充字段使其类似 C 的结构体。
- copy - 复制 dtype 对象 ,如果为 false,则是对内置数据类型对象的引用
记忆:
4.数据类型的程序
import numpy as np # dt = np.dtype(np.int32) print(dt) ## 使用 int a = np.array([1,2,3], dtype=dt) print(a) dt_f = np.dtype(np.float32) b = np.array([1,2,3], dt_f) print(b) dt_c = np.dtype(complex) c = np.array([1,2,3], dt_c) print(c) ## 自定义结构化类型 # [(10,) (20,) (30,)] dt_struct = np.dtype([("age", np.int32)]) d = np.array([(10), (20), (30)], dt_struct) print(d) # [10 20 30] print(d['age']) # dtype创建自定义实体对象类型 # [(b'tom', 10) (b'andy', 20)] # [b'tom' b'andy'] dt_object = np.dtype([("name", "S20"), ("age", np.int32)]) e = np.array([('tom', 10), ('andy', 20)], dt_object) print(e) print(e['name'])
5.数组属性
ndarray.shape
ndarray.ndim
ndarray.itemsize
6.程序
import numpy as np ## shape # 返回数组的形状 # (2, 4) a =np.array([[1,2,3,4],[5,6,7,8]]) print(a.shape) # 通过shape改变数组形状 a.shape = (4,2) print(a) ## ndim # 得到维度 # 1 b = np.array([1,2,3,6]) print(b.ndim) ## itemsize # 每个元素的单位字节长度 # 8 c = np.array([3,4,5,6], dtype=np.int64) print(c.itemsize) ## PS ## 通过reshape()改变形状 f = b.reshape(2,2) print(f)
7.基础数组创建
empty()
ones()
ones_like()
zeros()
zeros_like()
eye()
asarray()
arange()
linspace
8.程序
import numpy as np # 随机创建函数 a = np.empty([3,2], dtype=np.int8) print(a) # 0进行填充函数 b = np.zeros([3,2], dtype=np.int8) print(b) # 形状相同的,0进行填充 c = np.array([1,2,3,4], dtype=np.int8) d = np.zeros_like(c) print(d) # 1进行填充 e = np.ones([3,2], dtype=np.int8) print(e) # 对角线为1 f = np.eye(5) print(f) ### #asarray,把python中的list或tuple转成adarray aa = [1,2,3,4] bb = np.asarray(aa) print(bb) cc = (1,2,3,4) dd = np.asarray(cc) print(dd) # arange, 返回给定范围的数组。前包,后不包 ee = np.arange(1, 20, 2, dtype = np.float32) print(ee) ff = np.arange(10) print(ff) # linspace, 返回指定均匀间隔。前包后包 gg = np.linspace(10, 20, 6) print(gg)
三:进阶
1.切片与索引