python学习之基础内容(二)

本文详细介绍了NumPy库的作用,包括提供高效多维数组操作和科学计算函数,以及如何导入和创建数组。讲解了数组的属性、三维数组、特殊数组的创建方法,如arange、ones、zeros、eye和linspace。此外,还涉及数组切片、重塑、矩阵运算、求和、堆叠等操作,并展示了随机数生成的各种方法。

二. NumPy科学计算库

1.Numpy作用

  1. 提供了多维数组、矩阵的常用操作和一些高效的科学计算函数
  2. 底层运算通过C语言实现,处理速度快、效率高,适用于大规模多维数组
  3. 可以直接完成数组矩阵运算,无需循环

2.导入库

  1. Anaconda中已有NumPy库了,如若没有可以使用pip安装,“pip install numpy”
  2. 导入NumPy库 ——import numpy as np

3. 创建数组——array([列表]/(元组),dtype=数据类型)

import numpy as np
a=np.array([0,1,2,3])
print(a)
print(a[0])
a[1:3]

4.数组的属性

import numpy as np
a=np.array([0,1,2,3])
print(a.ndim)  #输出数组的维数
print(a.shape) #输出数组的形状,逗号表示是一个元组
print(a.size)  #输出数组元素的总个数
print(a.dtype)  #输出数组中元素的数据类型
print(a.itemsize)  #输出数组中每个元素的字节数

 

 5.三维数组

import numpy as np
t=np.array([[[0,1,2,3],[4,5,6,7],[8,9,10,11]],[[12,13,14,15],[16,17,18,19],[20,21,22,23]]])
print(t)
print(t.ndim)  #输出数组的维数
print(t.shape) #输出数组的形状
print(a.size)  #输出数组元素的总个数
print(t[0])    
print(t[0].ndim)
print(t[0].shape)
print(t[0].size)
print(t[0][0])
print(t[0][0].ndim)
print(t[0][0].shape)
print(t[0][0].size)
print(t[0][0][0])

6.数组中所有元素的数据类型必须一致

7.特殊数组

import numpy as np
a=np.arange(0,2,0.3) #np.arange(起始数字,结束数字,步长,dtype),创建一个由数字序列构成的数组
print("a=",a)
b=np.ones((3,2),dtype=np.int16) #np.ones(shape,dtype),创建一个元素全部为1的数组
print("b=",b)
c=np.zeros((2,3))  #np.zeros(shape,dtype) 创建一个全为0的数组
print("c=",c)
d=np.eye(3)  #np.eye(shape,dtype),创建一个单位矩阵
print("d=",d)
e=np.linspace(1,10,10)  #np.linspace(起始数字,结束数字,元素个数,dtype),创建等差数列
print("e=",e)
f=np.logspace(1,5,5,base=2) #np.logspace(起始指数,结束指数,元素个数,基base=,dtype),创建一个等比数列
print("f=",f)

 

8.asarray()函数与array()函数:将列表或元组转化为数组对象,不同之处如下:

当数据源本身已经是一个ndarray对象(N维数组对象)时,array()仍然会复制出一个副本,占用新的内存,而asarray()则不复制副本,它直接引用原数组

9.三维数组元素的切片

#三维数组元素的切片
import numpy as np
t=np.array([[[0,1,2,3],[4,5,6,7],[8,9,10,11]],[[12,13,14,15],[16,17,18,19],[20,21,22,23]]])
print("t=",t)
a=t[:,:,0]
print("a=",a)
b=t[0:1,0:2,3]   #一维选前一组,二维选前两行,三维取到上述范围第4列元素
print("b=",b)

 

10.使用reshape改变数组

import numpy as np
t=np.arange(12)
a=t.reshape(3,4)   #不改变当前数组,按照shape创建新的数组
print("t=",t)
print("a=",a)
b=t.resize(3,4)     #改变当前数组,按照shape创建数组?结果有点问题
print("t=",t)
print("b=",b)
c=np.arange(12).reshape(2,6)
print("c=",c)

 

11.相加

#一维数组和多维数组相加
import numpy as np
a=np.array([0,1,2,3])
b=np.array([[0,1,2,3],[4,5,6,7],[8,9,10,11]])
c=a+b
print("c=",c)

12.矩阵运算

#二维数组之矩阵运算
import numpy as np
A=np.array([[1,1],[0,1]])
B=np.array([[1,1],[0,1]])
C=A*B         #矩阵中对应的元素分别相乘
print("C=",C)
D=np.matmul(A,B)    #矩阵相乘
print("D=",D)
E=np.dot(A,B)     #矩阵相乘
print("E=",E)
F=np.transpose(A)    #转置
print("F=",F)
G=np.linalg.inv(A)   #求逆
print("G=",G)

13.数组求和

#数组求和运算
import numpy as np
t=np.arange(4)
s=np.sum(t)      #sum()整个数组求和
print("s=",s)
a=np.arange(12).reshape(3,4)
print("a=",a)
b=np.sum(a,axis=0)    #按列求和
print("b=",b)
c=np.sum(a,axis=1)     #按行求和
print("c=",c)
#三维数组
q=np.arange(24).reshape(2,3,4)
print("q=",q)
d=np.sum(q,axis=0)      #上下两数组元素对应相加,得到一个新的二维数组
print("d=",d)
e=np.sum(q,axis=1)       #上下两数组分别按列求和
print("e=",e)
f=np.sum(q,axis=2)      #上下两数组分别按行求和
print("f=",f)

 

14.数组堆叠运算

#数组堆叠运算
import numpy as np
x=np.array([1,2,3])
y=np.array([4,5,6])
a=np.stack((x,y),axis=0)    #在轴=0上堆叠,横着放
print("a=",a)
b=np.stack((x,y),axis=1)    #在轴=0上堆叠,竖着放
print("b=",b)
#二维数组堆叠
m=np.array([[1,2,3],[4,5,6],[7,8,9]])
n=np.array([[10,20,30],[40,50,60],[70,80,90]])
c=np.stack((m,n),axis=0)
print("c=",c)
d=np.stack((m,n),axis=1)
print("d=",d)

 

 15.矩阵

#矩阵
import numpy as np
a=np.mat('1 2 3;4 5 6')    #矩阵a
print("a=",a)
b=np.mat([[0,1],[2,3]])
c=np.mat([[1,1],[2,0]])
d=b*c        #矩阵相乘
print("d=",d)
e=b.T        #转置
print("e=",e)   
f=b.I        #求逆
print("f=",f)

 

16.随机数

#随机数
import numpy as np
a=np.random.rand(2,3)   #创建2*3的随机数组,取值是在【0,1)之间均匀分布的浮点数
print("a=",a)
b=np.random.uniform(1,5,(3,2))  #创建3*2的随机数组,取值是在1至5之间均匀分布的浮点数
print("b=",b)
c=np.random.randint(1,5,(3,2))  #创建3*2的随机数组,取值是在1至5之间均匀分布的整数
print("c=",c)
d=np.random.randn(2,3)   #创建2*3的随机数组,符合标准正态分布
print("d=",d)
e=np.random.normal(0,1,(3,2))   #创建3*2的随机数组,符合正态分布,均值为0,方差为1

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

流萤数点

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值