python numpy教程_Python之NumPy使用教程

1.NumPy概述

NumPy(Numerical Python)是用Python进行科学计算的基础软件包。包含以下特点:强大的N维数组对象Array

成熟的函数库

用于集成C/C++和Fortran代码的工具

实用的线性代数、傅立叶变换和随机生成函数

2.NumPy安装pip install numpy或pip3 install numpy

3.NumPy引入import numpy as np#为了方便实用numpy 采用np简写

4.NumPy方法array=np.array([[1,2,3],[4,5,6]])#将列表转换为矩阵 并转换为int类型

print(array)

'''

[[1 2 3]

[4 5 6]]

'''

4.1NumPy属性print('array of dim:',array.ndim)#矩阵的维度

#array of dim:2

print('array of shape',array.shape)#矩阵的行数和列数

#array of shape:(2,3)

print('number of size:',array.size)#元素的个数

#number of size:6

4.2NumPy创建Arrayarray:创建数组

dtype:指定数据类型

zeros:创建数据全为0

ones:创建数据全为1

empty:创建数据接近0

arange:指定范围内创建数据

linspace创建线段

创建数组a=np.array([1,2,3])

print(a)

#[1,2,3]

指定数据dtypea=np.array([1,2,3],dtype=np.int)#指定为int类型

print(a.dtype)

#int 64

b=np.array([1,2,3],dtype=np.float)#指定为float类型

print(b.dtype)

#float 64

创建特定数据a=np.array([[1,2,3],[4,5,6]])#矩阵 2行3列

print(a)

'''

[[1 2 3]

[4 5 6]]

'''

创建全0数组a=np.zeros((2,3))#数据全0 2行3列

print(a)

'''

[[0 0 0]

[0 0 0]]

'''

创建全1数组 指定特定类型dtypea=np.zeros((2,3),dtype=np.int)#数据全1 2行3列 同时指定类型

print(a)

'''

[[1 1 1]

[1 1 1]]

'''

创建全空数组 每个值接近0a=np.empty(2,3)#数据全为empty 3行4列

print(a)

'''

[[ 0.00000000e+000 0.00000000e+000 2.12704693e-314]

[ 2.12706024e-314 2.12706024e-314 2.12706024e-314]]

'''

用array创建连续数组a=np.arange(1,10,2)#1到10的数据 2步长

print(a)

#[1 3 5 7 9]

用reshape改变数据形状a=np.arange(6).reshape(2,3)

print(a)

'''

[[0 1 2]

[3 4 5]]

'''

用linspace创建线段形数据a=np.linspace(1,10,20)#开始端1 结束端5 分割成10个数据 生成线段

print(a)

'''

[ 1. 1.44444444 1.88888889 2.33333333 2.77777778 3.22222222

3.66666667 4.11111111 4.55555556 5. ]

'''

4.3NumPy基础运算

基础运算之加、减、三角函数等a=np.array([10,20,30,40])

b=np.arange(4) #array[0,1,2,3]

c=a+b#加法运算

print(c)

#[10,21,32,43]

c=a-b#减法运算

print(c)

#[10.19,28,37]

c=10*np.sin(a)#三角函数运算

#[-5.44021111, 9.12945251, -9.88031624, 7.4511316 ]

print(b<3)#逻辑判断

#[ True True True False]

d=np.random.random((2,3))#随机生成2行3列的矩阵

print(d)

'''

[[ 0.21116981 0.0804489 0.51855475]

[ 0.38359164 0.55852973 0.73218811]]

'''

print(np.sum(d))#元素求和

#2.48448292958

print(np.max(d))#元素求最大值

#0.732188108709

print(np.min(d))#元素求最小值

#0.0804488978886

多维矩阵运算a=np.array([[1,1],[0,1]])

b=np.arange(4).reshape((2,2))

c=np.dot(a,b)#或c=a.dot(b)矩阵运算

print(c)

'''

[[2 4]

[2 3]]

'''

对行或列执行查找运算a=np.array([[1,2],[3,4]])

print(a)

'''

[[1,2]

[3,4]]

'''

print(np.max(a,axis=0))#axis=0时是对列进行操作

#[3,4]

print(np.min(a,axis=1))#axis=1是对行进行操作

#[1,3]

矩阵索引操作A=np.arange(2,14).reshape(3,4)

print(A)

'''

[[2,3,4,5]

[6,7,8,9]

[10,11,12,13]]

'''

print(np.argmax(A))#矩阵中最大元素的索引

#11

print(np.argmin(A))#矩阵中最小元素的索引

#0

print(np.mean(A))#或者np.average(A)求解矩阵均值

#7.5

print(np.cumsum(A))#矩阵累加函数

#[2 5 9 14 20 27 35 44 54 65 77 90]

print(np.diff(A))#矩阵累差函数

'''

[[1 1 1]

[1 1 1]

[1 1 1]]

'''

print(np.nonzero(A))#将非0元素的行与列坐标分割开来

#(array([0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2]), array([0, 1, 2, 3, 0, 1, 2, 3, 0, 1, 2, 3]))

矩阵排序、转置、替换操作A=np.arange(14,2,-1).reshape((3,4))

print(A)

'''

[[14 13 12 11]

[10 9 8 7]

[ 6 5 4 3]]

'''

print(np.sort(A))#排序

'''

[[11 12 13 14]

[ 7 8 9 10]

[ 3 4 5 6]]

'''

print(np.transpose(A))

'''

[[14 10 6]

[13 9 5]

[12 8 4]

[11 7 3]]

'''

print(np.clip(A,5,9))#替换 判断当前矩阵元素是否比最小值小或比最大值大 若是则替换

'''

[[9 9 9 9]

[9 9 8 7]

[6 5 5 5]]

'''

5.索引

一维索引A=np.arange(0,12)

print(A)

#[ 0 1 2 3 4 5 6 7 8 9 10 11]

print(A[1])#一维索引

#1

A=np.arange(0,12).reshape((3,4))

print(A[0])

#[0,1,2,3]

二维索引A=np.arange(0,12).reshape((3,4))

print(A)

'''

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]]

'''

print(A[1][1])#或者A[1,1]

#5

print(A[1,1:3])#切片处理

#[5,6]

for row in A:

print(A)

'''

[0 1 2 3]

[4 5 6 7]

[ 8 9 10 11]

'''

for col in A:

print(col)

'''

[0 4 8]

[1 5 9]

[ 2 6 10]

[ 3 7 11]

'''

for item in A.flat:

print(item)

'''

0

1

...

10

11

'''

6.NumPy之Array合并A=np.array([1,1,1])

B=np.array([2,2,2])

print(np.vstack((A,B)))#上下合并

'''

[[1 1 1]

[2 2 2]]

'''

print(np.hstack((A,B)))#左右合并

#[1 1 1 2 2 2]

增加维度A=np.array([1,1,1])

print(A.shape)

#(3,)

print(A[np.newaxis,:])

#[[1 1 1]]

print(A[np.newaxis,:].shape)#newaxis增加维度

#(1,3)

print(A[:,np.newaxis])

'''

[[1]

[1]

[1]]

'''

print(A[:,np.newaxis].shape)

#(3,1)

多矩阵合并A = np.array([1,1,1])[:,np.newaxis]

B = np.array([2,2,2])[:,np.newaxis]

print(np.concatenate((A,B,B,A),axis=0))#0表示上下合并

'''

[[1]

[1]

[1]

[2]

[2]

[2]

[2]

[2]

[2]

[1]

[1]

[1]]

'''

print(np.concatenate((A,B,B,A),axis=1))#1表示左右合并

'''

[[1 2 2 1]

[1 2 2 1]

[1 2 2 1]]

'''

7.NumPy分割A=np.arange(12).reshape((3,4))

print(A)

'''

[[ 0 1 2 3]

[ 4 5 6 7]

[ 8 9 10 11]]

'''

print(np.split(A,3,axis=0))#横向分割成3部分 或者np.vsplit(A,3)

#[array([[0, 1, 2, 3]]), array([[4, 5, 6, 7]]), array([[ 8, 9, 10, 11]])]

print(np.split(A,2,axis=1))#竖向分割成2部分 或者np.hsplit(A,2)

'''

[array([[0, 1],

[4, 5],

[8, 9]]), array([[ 2, 3],

[ 6, 7],

[10, 11]])]

'''

print(np.array_split(A,3,axis=1))#不等量分割成3部分

'''

[array([[0, 1],

[4, 5],

[8, 9]]), array([[ 2],

[ 6],

[10]]), array([[ 3],

[ 7],

[11]])]

'''

8.NumPy中copy和deep copy

'='赋值方式会带有关联性a=np.arange(4)

print(a)

#[1 2 3 4]

b=a

c=a

d=b

print(b is a)

#True

print(c is a)

#True

print(d is a)

#True

b[0]=5#改变b的值,a,c,d同样会进行改变

print(a)

#[5 2 3 4]

'copy()'赋值方式没有关联性a=np.arange(4)#deep copy

print(a)

#[0 1 2 3]

b=a.copy()

a[0]=5

print(b)#值并不发生改变

#[0 1 2 3]

更多内容请关注公众号'谓之小一',若有疑问可在公众号后台提问,随时回答,内容转载请注明出处。如果感觉不错的话,可以资助1元钱当作鼓励,Thank you谢谢!

3532071941.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值