Numpy&Pandas 数据处理与挖掘

笔记来源B站:https://www.bilibili.com/video/BV1xt411v7z9?p=21

python学习笔记

  • 1 Numpy
    • 1.1 Numpy优势
      • 1.1.1 Numpy介绍
      • 1.1.2 ndarray介绍
      • 1.1.3 ndarray与Python原生list效率对比
      • 1.1.4 ndarray优势
    • 1.2 认识N维数组-ndarray属性
      • 1.2.1 ndarray的属性
      • 1.2.2 ndarray的形状
      • 1.2.3 ndarray的类型
    • 1.3 基本操作
      • 1.3.1 生成数组的方法
      • 1.3.2 切片索引
      • 1.3.3 形状修改
      • 1.3.4 类型修改
      • 1.3.5 数组去重
    • 1.4 Ndarray运算

1 Numpy

1.1 Numpy优势

1.1.1 Numpy介绍

Numpy(Numerical Python)是python的数值计算库,用于快速处理任意维度的数组
Numpy支持常见的数组和矩阵操作
Numpy使用ndarray对象来处理多维数组,该对象是一个快速而灵活的大数据容器

1.1.2 ndarray介绍

ndarray:N-dimensional array

用法示例:

import numpy as np

score = np.ndarray([],[],[])

1.1.3 ndarray与Python原生list效率对比

Numpy&Pandas 数据处理与挖掘_第1张图片
结果:
Numpy&Pandas 数据处理与挖掘_第2张图片

1.1.4 ndarray优势

  1. 内存块风格
    Numpy&Pandas 数据处理与挖掘_第3张图片

    • ndarray存储的都是相同类型的数据,这样存储数据时数据与数据的地址都是连续的,虽然通用性比较差,但是能极大的提高运算效率
    • list可以存储不同类型的数据,因此通用性较强,但是数据的地址不是连续的,读取数据的时候只能一个一个寻址,造成效率不高
  2. ndarray支持并行化(向量化)运算

  3. Numpy底层使用C语言编写,内部解除了GIL(全局解释器锁),其对数组的操作速度不受Python解释器的限制,效率远高于纯Python代码

1.2 认识N维数组-ndarray属性

1.2.1 ndarray的属性

数组属性反映了数组本身固有的信息

属性名字 属性解释
ndarray.shape 数组维度的元组
ndarray.ndim 数组维数
ndarray.size 数组中的元素数量
ndarray.dtype 数组元素的类型
ndarray.itemsize 一个数组元素的长度(字节)

其中上面两个加粗的属性比较重要,知道上面两个加粗的属性之后,就相当于知道了所有的其他属性

Numpy&Pandas 数据处理与挖掘_第4张图片

1.2.2 ndarray的形状

创建三个不同的数组

a = np.array([[1,2,3],[4,5,6]])
b = np.array([1,2,3,4])
c = np.array([[[1,2,3],[4,5,6]],[[1,2,3],[4,5,6]]])

Numpy&Pandas 数据处理与挖掘_第5张图片

1.2.3 ndarray的类型

Numpy&Pandas 数据处理与挖掘_第6张图片

1.3 基本操作

1.3.1 生成数组的方法

  1. 生成0和1的数组
    np.zeros(shape)
    np.ones(shape)

    Numpy&Pandas 数据处理与挖掘_第7张图片

  2. 从现有数组中生成
    np.array()
    np.copy()
    np.asarray()

    注意:前两者是创建了一个新的数组,最后np.asarray()是指拷贝了索引值,因此当原数组发生改变的时候,使用最后一种方法所“创建”的数组也会发生变化

  3. 生成固定范围的数组
    np.linspace(0, 10, 101)
    # 生成[0,10]之间的等间距101个点
    np.arange(a, b, c)
    # 生成[a, b)之间的点,c是步长

  4. 生成随机数组

    • np.random模块
      • 均匀分布 np.random.uniform(low = 0.0, high = 1.0, size = None)
      • 正态分布np.randoom.normal(loc = 0.0, scale = 1.0, size = None)

1.3.2 切片索引

  • 二维数组索引
    • res = data[0, 0:3]
    • 代表索引data的第一行,第1到3列
    • 注意:用:索引时是左闭右开的
  • 三维数组索引
    • 方法一样,从高维向低维索引即可

1.3.3 形状修改

  • ndarray.reshape((a,b))

    • 将数组修改为a行b列,返回一个新的数组
    • 注意:只会将形状重新排列,内部的数据顺序不会改变(不能实现转置)
      import numpy as np
      
      a1 = np.array([[1,2,3],[4,5,6]])
      print("-------before---------")
      print(a1)
      a2 = a1.reshape((3,2))
      print("-------after:a1---------")
      print(a1)
      print("-------after:a2---------")
      print(a2)
      
      Numpy&Pandas 数据处理与挖掘_第8张图片
  • ndarray.resize((a,b))

    • 原数组修改为a行b列,使用的时候不需要新数组来接,直接用
    • 注意:只会将形状重新排列,内部的数据顺序不会改变(不能实现转置)
      import numpy as np
      
      a1 = np.array([[1,2,3],[4,5,6]])
      print("-------before---------")
      print(a1)
      a1.resize((3,2))
      print("-------after:a1---------")
      print(a1)
      
      Numpy&Pandas 数据处理与挖掘_第9张图片
  • ndarray.T

    • 返回转置后的新数组
      import numpy as np
      
      a1 = np.array([[1,2,3],[4,5,6]])
      print("-------before---------")
      print(a1)
      a2 = a1.T
      print("-------after:a1---------")
      print(a1)
      print("-------after:a2---------")
      print(a2)
      
      Numpy&Pandas 数据处理与挖掘_第10张图片

1.3.4 类型修改

  • ndarray.astype(type)
    • type是类型的字符串
  • ndarray.tostring()序列化到本地

1.3.5 数组去重

import numpy as np

a1 = np.array([[1,2,3,4],[3,4,5,6]])
print("-------before---------")
print(a1)
a2 = np.unique(a1)
print("-------after:a1---------")
print(a1)
print("-------after:a2---------")
print(a2)

Numpy&Pandas 数据处理与挖掘_第11张图片

1.4 Ndarray运算

你可能感兴趣的:(Python学习笔记,学习笔记,numpy,pandas,python)