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学习笔记——读懂官方文档的主要内容,如果未能解决你的问题,请参考以下文章

Open3D官方文档学习笔记

Open3D官方文档学习笔记

Datawhale powerful-numpy《从小白到入门》学习笔记

DOM探索之基础详解——学习笔记

vue.js 2.0 官方文档学习笔记 —— 01. vue 介绍

Swift -- 官方文档Swift-Guides的学习笔记