【python数据分析模块教程】3——numpy基础简介以及运用

这篇教程详细介绍了numpy模块在Python数据分析中的基础用法,包括一维和多维列表创建、快速创建对象、平均划分等。进一步讲解了索引和切片操作,如获取指定行列数据、bool索引和多个条件判断。最后,讨论了常见的矩阵操作,如类型转换、求和、指数计算、开方、维度变换、矩阵拼接及切割等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.创建

1.1 一维列表创建

vector = np.array([5, 10, 15, 20])

1.2 多维列表创建

matrix = np.array([[5, 10, 15], [20, 25, 30], [35, 40, 45]])

1.3快速创建对象

np.full([3,4],1)  #3*4 值为1的矩阵
np.full([3,4],True) #3*4 值为True的矩阵
np.zeros ((3,4))#3*4 值为0的矩阵
np.ones( (2,3,4))#3*4 值为1的矩阵


np.arange( 10, 30, 5 )# 起始为10,5为步长,30为结尾取不到
np.arange(12).reshape(4,3) #0-12,步长为12,4*3多维的矩阵

np.random.random((2,3)) #随机矩阵:random.random 后面的 (2,3) 表示要得到一个2行3列的矩阵,默认会产生 -1 到 +1 的随机值。

1.4 平均划分

# 把从0-2Π的值平均分为100份
from numpy import pi
np.linspace( 0, 2*pi, 100 )

2.索引和切片

2.1 获取指定行列的数据

data[1,2] #第二行第三列的数据

2.2 多行多列

data[0:3] #0-3行
data[,0:1] #0-1列
data[0:3,[0,1]]  #0-3行的前两列(矩阵)
data[[0,1],[2,3]]#0行1列的数据和2行3列的数据

2.3 bool索引

vector = np.array([5, 10, 15, 20 ,10])
vector == 10 
#返回array([False,  True, False, False,  True])
equal_to_ten = (vector == 10) 
#返回array([False,  True, False, False,  True])
vector[equal_to_ten] 
#返回array([10, 10])

2.4 多个条件判断

vector = np.array([5, 10, 15, 20 ,10])
res = (vector == 10) |(vector == 20#返回array([False,  True, False, True,  True])
vector[res]
#返回array([10, 20, 10])

3.常见操作

3.1 获取类型,类型转换

vector.dtype
vector.astype('float')

3.2 求和

matrix.sum() # 所有元素求和
matrix.sum(axis=1) #axis=1是按照行求和,0是按列求和

3.3求指数

np.exp(matrix)

3.4开方

np.sqrt(matrix)

3.5多维变1维

matrix.ravel()

3.6 矩阵的扩展

a = np.arange(0, 40, 10)
b = np.tile(a, (3, 5))  # 行变成3倍,列变成5倍

输出
a=array([ 0, 10, 20, 30])
b=array([[ 0, 10, 20, 30,  0, 10, 20, 30,  0, 10, 20, 30,  0, 10, 20, 30,
         0, 10, 20, 30],
       [ 0, 10, 20, 30,  0, 10, 20, 30,  0, 10, 20, 30,  0, 10, 20, 30,
         0, 10, 20, 30],
       [ 0, 10, 20, 30,  0, 10, 20, 30,  0, 10, 20, 30,  0, 10, 20, 30,
         0, 10, 20, 30]])

3.7 矩阵的拼接

  • 水平拼接
a = np.floor(10*np.random.random((2,3))) #floor向下取整
b = np.floor(10*np.random.random((2,3)))
c=np.hstack((a,b)) 

输出:
a = array([[0., 5., 6.],
       [0., 2., 5.]])
b = array([[0., 1., 0.],
       [4., 0., 8.]])
c = array([[0., 5., 6., 0., 1., 0.],
       [0., 2., 5., 4., 0., 8.]])
  • 垂直拼接
d = np.vstack((a,b)) 

输出:
d = array([[0., 5., 6.],
       [0., 2., 5.],
       [0., 1., 0.],
       [4., 0., 8.]])

3.8 矩阵的切割

  • 水平切割
a = np.floor(10*np.random.random((8,2)))
b=np.vsplit(a,2)
输出:
a = array([[2., 8.],
       [8., 9.],
       [2., 0.],
       [9., 7.],
       [5., 5.],
       [1., 0.],
       [0., 0.],
       [3., 2.]])
b = [array([[2., 8.],
        [8., 9.],
        [2., 0.],
        [9., 7.]]),
 array([[5., 5.],
        [1., 0.],
        [0., 0.],
        [3., 2.]])]
  • 垂直切割
a = np.floor(10*np.random.random((2,12)))
c=np.hsplit(a,3)

输出:
a =array([[0., 4., 4., 1., 6., 6., 8., 4., 1., 3., 7., 0.],
       [4., 2., 7., 4., 5., 9., 8., 2., 4., 2., 7., 8.]])
c = [array([[0., 4., 4., 1.],
        [4., 2., 7., 4.]]),
 array([[6., 6., 8., 4.],
        [5., 9., 8., 2.]]),
 array([[1., 3., 7., 0.],
        [4., 2., 7., 8.]])]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值