美文网首页Python数据分析
python数据科学02-numpy数组基础操作

python数据科学02-numpy数组基础操作

作者: 小贝学生信 | 来源:发表于2021-08-08 09:19 被阅读0次
  • 在某些方面,Numpy数组与Python内置的list列表类型非常相似,是Python数据科学的核心工具;
  • numpy一维数组可以理解为向量,二维数组即是数据框(更准确来说,对应R里的matrix矩阵)....;
  • numpy数组与python里的list列表最大的不同是前者需包含同一种数据类型才行,后者则没有此限制。
  • 本文将学习numpy数组的一些基础操作:创建数组、取数组子集、数组维度变换、数组的合并与拆分


pip install numpy
ipython
#进入ipython环境
import numpy as np

1、创建数组

  • np.array():最直接的方式
#一维数组
x1 = np.array([1,2,3])
x1.shape
# (3,) 表示长度为3的一维向量

#二维数组
x2 = np.array([[1,3,5],[11,12,13]])
x2.shape
# (2,3) 表示两行三列的二维数组矩阵

1.1 固定取值

  • np.zeros(n, dtype=int) 创建长度为n,值全为0的整型的一维数组
  • np.ones((a,b), dtype=float) 创建a行b列,值全为1的浮点型的二维数组
  • np.full((a,b),x, dtype=int/float) 创建a行b列,值全为x的二维数组
np.full((3,3),1.11)
# array([[1.11, 1.11, 1.11],
#       [1.11, 1.11, 1.11],
#       [1.11, 1.11, 1.11]])

1.2 规律分布

  • np.arange() 等差数列
  • np.random.randint() 随机整数
  • np.random.random(10) 长度为10,符合0~1均匀分布的一维数组
  • np.random.normal(0, 1, c(2,3)) 两行三列的,符合均值为0,标准差为1正态分布的二维数组

2、数组取子集

2.1 索引从0开始

参看下图

  • 类似python的list取子集方式,numpy数组的索引也是从0开始;
  • 负数的索引可以理解为倒数第n个值。


2.2 取单个值的子集

  • 直接按坐标索引查看即可

2.3 切片[a:b:c]--左闭(包括)右开(不包括)加步长

  • 对于长度为10的一维数组x1,x1[0:5]表示索引0到索引4的子集(不包括索引5),默认步长为1
  • a为0时,可省略;a,b均省略时,则表示全集;
  • 步长为负数时,表示逆序取子集
  • 对于二维数组,也是类似的取法。x2[a:b,c:d]

    x2[2,:]:表示取第3行;x2[:,0]:表示取第1列

2.3 列表(多个)索引值取子集

2.4 逻辑布尔值取子集

  • AND:&、OR:|、NOT:~
关于数组子集的联动性
  • 若将一个数组的子集赋予给一个新对象,那么当这个新对象发生变化时,原始数组也会发生相应变化。如下图操作所示--


  • copy()方法可创建不相关联的子集副本

3、数组维度变换

  • 矩阵转置 T()方法:行列转换
  • 维度转换 reshaple()方法:按照希望的可执行的维度结果转换

4、数组的合并与拆分

4.1 数组合并

  • concatenate() 可连接两个一维数组,或者按行/列合并两个二维数组。

  • vstack() 纵向合并两个数组,只要这两个数组的列数相同
  • hstack() 横向合并两个数组,只要这两个数组的行数相同

4.2 数组拆分

  • split() 拆分一维数组,参数的索引值指定分裂点的位置

  • 当函数结果返回多个对象时,在等号前就要设置相应个数的对象名


  • vsplit() :横向拆分一个二维数组(上下);同理hsplit() :纵向拆分一个二维数组
    数组拆分(左右)

相关文章

网友评论

    本文标题:python数据科学02-numpy数组基础操作

    本文链接:https://www.haomeiwen.com/subject/xcunvltx.html