numpy学习笔记——读懂官方文档
Posted farmerspring
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了numpy学习笔记——读懂官方文档相关的知识,希望对你有一定的参考价值。
1. 安装方法
pycharm-file-setting-project interpreter-选择‘+’-搜索numpy
2. 基本功能
>>> import numpy as np >>> a = np.arange(15).reshape(3, 5) # arange需要整理的数据集大小 reshape整理成几行几列 >>> a array([[ 0, 1, 2, 3, 4], [ 5, 6, 7, 8, 9], [10, 11, 12, 13, 14]]) # 输入a,直接整理成从0递增的三行五列数据 >>> a.shape # a的格式 三行五列 (3, 5) >>> a.ndim # a的维数 2 2 >>> a.dtype.name #dtype表示数组a内元素类型 ‘int64‘ >>> a.itemsize # 数组中每个元素占几位 8 8 >>> a.size # a的大小 15 15
3. 构造数组
(1)使用array函数
# 生成一维数组 >>> a = np.array([2,3,4]) >>> a array([2, 3, 4]) # 生成二维数组,注意中括号和小括号 >>> b = np.array([(1.5,2,3), (4,5,6)]) >>> b array([[ 1.5, 2. , 3. ], [ 4. , 5. , 6. ]]) # 生成复杂数组,类型提前声明,注意括号 >>> c = np.array( [ [1,2], [3,4] ], dtype=complex ) >>> c array([[ 1.+0.j, 2.+0.j], [ 3.+0.j, 4.+0.j]])
(2)生成零数组zeros,一数组ones,空数组empty
>>> np.zeros( (3,4) )
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
(3)arange生成数字序列
# 顺序递增序列 d = np.arange(15) d array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]) #开始10,结束30,步长5 #注意:不包括30 >>> np.arange( 10, 30, 5 ) array([10, 15, 20, 25])
(4)linspace
# 0-2之间均匀找9个数,包括0和2 >>> np.linspace( 0, 2, 9 ) array([ 0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])
(5)使用函数
>>> x = np.linspace( 0, 2*3.14, 10 ) >>> x array([ 1. , 1.58666667, 2.17333333, 2.76 , 3.34666667, 3.93333333, 4.52 , 5.10666667, 5.69333333, 6.28 ]) >>>np.sin(x) array([ 0.84147098, 0.99987407, 0.82390046, 0.37239904, -0.20363962, -0.71157736, -0.98155025, -0.92327428, -0.55623802, -0.0031853 ])
(6)随机数 random
>>> np.random.rand(3,2) array([[ 0.14022471, 0.96360618], [ 0.37601032, 0.25528411], [ 0.49313049, 0.94909878]])
4. 数组的输出
# 三维数组的输出 >>> c = np.arange(24).reshape(2,3,4)
# reshape的理解:第3个维度是4,里面有4个数据;
第2个维度是3,里面有3个包含4个数据的数组
第1个维度是2,里面有2个三行四列的矩阵
>>> print(c) [[[ 0 1 2 3] [ 4 5 6 7] [ 8 9 10 11]] [[12 13 14 15] [16 17 18 19] [20 21 22 23]]]
5. 主要操作
(1)点乘和叉乘
>>> A = np.array( [[1,1], ... [0,1]] ) >>> B = np.array( [[2,0], ... [3,4]] ) # 对应元素直接相乘 >>> A*B array([[2, 0], [0, 4]]) # 矩阵乘法 >>> A.dot(B) array([[5, 4], [3, 4]]) >>> np.dot(A, B) array([[5, 4], [3, 4]])
(2)求最大max、最小min、求和sum,
在整个数组范围中求
>>> a = np.random.random((2,3)) >>> a array([[ 0.18626021, 0.34556073, 0.39676747], [ 0.53881673, 0.41919451, 0.6852195 ]]) >>> a.sum() 2.5718191614547998 >>> a.min() 0.1862602113776709 >>> a.max() 0.6852195003967595
在某个维度求和
>>> b = np.arange(12).reshape(3,4) >>> b array([[ 0, 1, 2, 3], [ 4, 5, 6, 7], [ 8, 9, 10, 11]]) >>> b.sum(axis=0) # 对列求和 array([12, 15, 18, 21]) >>> b.min(axis=1) # 对行求和 array([0, 4, 8]) >>> b.cumsum(axis=1) # 每行逐次求和 array([[ 0, 1, 3, 6], [ 4, 9, 15, 22], [ 8, 17, 27, 38]])
6. 常用函数
aqrt、exp、sort...
7. 索引、切片、正则化
多维操作和一维操作相似
>>> def f(x,y): ... return 10*x+y ... >>> b = np.fromfunction(f,(5,4),dtype=int) >>> b array([[ 0, 1, 2, 3], [10, 11, 12, 13], [20, 21, 22, 23], [30, 31, 32, 33], [40, 41, 42, 43]]) # 输出第2行,第3列的数 >>> b[2,3] 23 # 输出第0-5行(不包括第5行),第1列的数 >>> b[0:5, 1] array([ 1, 11, 21, 31, 41]) # 输出所有行,第1列的数 # :表示所有 >>> b[ : ,1] array([ 1, 11, 21, 31, 41]) # 输出1-3行(不包括第3行),所有数 >>> b[1:3, : ] array([[10, 11, 12, 13], [20, 21, 22, 23]])
# 输出最后一行
>>> b[-1]
array([40, 41, 42, 43])
以上是关于numpy学习笔记——读懂官方文档的主要内容,如果未能解决你的问题,请参考以下文章
Datawhale powerful-numpy《从小白到入门》学习笔记