博客
关于我
numopy学习笔记
阅读量:768 次
发布时间:2019-03-23

本文共 2567 字,大约阅读时间需要 8 分钟。

numpy 作为一个强大的 Python 库,提供了丰富的功能来处理数组数据。本文将从基础知识出发,逐步介绍 numpy 的核心功能。

numpy 数组的基本属性

在使用 numpy 时,最基本的属性有以下几个:

  • shape:表示数组的维度,这是一个元组,每个元素表示对应维度的大小。
  • ndim:表示数组的维度数,默认为 1 表示一维数组。
  • size:表示数组中元素的总数。
  • itemsiz:返回数组中元素的大小(以字节为单位)。
  • dtype:返回数组元素的类型信息。

以下是一个常用的创建指定类型数组的示例:

np.array([1.1, 2.2, 3.3], dtype='float32')

其中,dtype='float32' 参数指定了数组元素的类型,生成的是浮点型数组。

生成数组

生成数组的功能有以下几种常用方法:

  • 生成 0 和 1 的数组

    • 使用 np.zeros 创建全 0 的数组,指定形状和数据类型:
    np.zeros(shape=[3, 4], dtype="float")
    • 使用 np.ones 创建全 1 的数组:
    np.ones(shape=[2, 2])
  • 从现有数组中生成

    • 浅拷贝:使用 np.asarray
    a = np.array([1, 2, 3])b = np.asarray(a)
    • 深拷贝:使用 np.copynp.array(...)
    c = np.copy(a)  # 深拷贝d = np.array(a.copy())  # 深拷贝
  • 固定范围生成数组:使用 np.linspace 生成等距固定范围的数组:

    np.linspace(0, 10, 100)

    这将生成 [0, 10] 范围内的 100 个等分点。

  • 统计函数

    生成数据时经常会需要一些统计函数来分析数据:

    • 均匀分布随机数

      np.random.rand(d0, d1, ...)  # [0, 1) 范围np.random.uniform(0.0, 1.0, size=(3, 4))# 生成指定大小的均匀分布随机数
    • 高斯分布随机数

      np.random.normal(0, 1)  # 标准正态分布np.random.normal(5, 2)  # 均值为 5,标准差为 2

    数组操作

    numpy 提供丰富的数组操作功能,包括索引切割、形状修改和类型转换等。

  • 数组索引切片

    arr = np.arange(10)print(arr)  # 输出 [0, 1, 2, ..., 9]print(arr[::2])  # 步长为 2 切成 [0, 2, 4, 6, 8]
  • 形状修改

    • 转置:使用 np.T 切换行和列:
    arr = np.arange(4).reshape(2, 2)print(arr.T)# 输出:# [[0, 1],#  [2, 3]]
    • 调整大小:使用 np.reshape
    new_arr = np.reshape(arr, (1, -1))print(new_arr)
    • 调整大小并反转:可以通过结合切片和 reshape 实现。
  • 类型转换:使用 np.astype 方法转换数组元素类型:

    float_arr = np.array([1, 2, 3], dtype=np.float64)int_arr = float_arr.astype('int32')
  • 数组增强功能

    numpy 还提供了一些实用功能来操作数组:

    • 去重:使用 np.unique 方法:
      unique_arr = np.unique([1, 2, 2, 3, 3, 3], return_indices=False)print(unique_arr)# 输出:[1, 2, 3]

    数组运算

    数组之间的运算通常涉及到以下操作:

  • 逻辑运算和布尔索引

    condition = np.where(condition_matrix, True_values, False_values)
  • 统计指标计算:使用 np.max, np.min, np.mean 等函数来计算数据特征。例如:

    data = np.array([4, 5, 6, 7, 8])print(np.mean(data))  # 6.0print(np.max(data))  # 8
  • 数组间操作

    当需要对两个数组进行操作时,numpy 会利用数组的广播机制来处理形状不一致的问题。具体来说,当两个数组在某个维度的某个位置上为 1 时,会自动扩展到相同的大小进行操作。

    例如,按钮创建两个不同形状的数组并进行加法操作:

    a = np.array([...], shape=(2, 3))b = np.array([...], shape=(3, 2))a + b# 会自动广播到 (2, 2) 维度上进行加法

    矩阵运算

    如果需要执行矩阵乘法,可以使用以下两种方式:

  • 通过 NumPy 的矩阵表示:

    data_arry @ weights  # 如果是 2D 矩阵np.matmul(data_arry, weights_arry)
  • 通过 Python 的 @ 操作符(推荐使用)。

  • 合并与分割

    合并数据可以使用以下函数:

    • 水平拼接:使用 np.hstack

      a = np.array([[1, 2], [3, 4]])b = np.array([[5, 6], [7, 8]])b = np.hsplit(b, [1, 2])result = np.hstack((a, b))
    • 竖直拼接:使用 np.vstack

      chunks = np.array([[1, 2, 3, 4], [5, 6, 7, 8], [9, 10, 11, 12]])stacked = np.vstack(chunks)

    IO 操作

    与文件操作相关的常用函数包括:

    • 读取文本文件:使用 np.genfromtxt

      data = np.genfromtxt('sample.csv', delimiter=',')
    • 处理缺失值:常见的处理方法是删除包含缺失值的行,或者用统计方法进行插值填补。

    总结

    通过以上基本功能和代码示例,可以逐步掌握 numpy 的核心工作流程。

    转载地址:http://psnzk.baihongyu.com/

    你可能感兴趣的文章
    MySQL5.6的Linux安装shell脚本之二进制安装(一)
    查看>>
    MySQL5.6的zip包安装教程
    查看>>
    mysql5.7 for windows_MySQL 5.7 for Windows 解压缩版配置安装
    查看>>
    Webpack 基本环境搭建
    查看>>
    mysql5.7 安装版 表不能输入汉字解决方案
    查看>>
    MySQL5.7.18主从复制搭建(一主一从)
    查看>>
    MySQL5.7.19-win64安装启动
    查看>>
    mysql5.7.19安装图解_mysql5.7.19 winx64解压缩版安装配置教程
    查看>>
    MySQL5.7.37windows解压版的安装使用
    查看>>
    mysql5.7免费下载地址
    查看>>
    mysql5.7命令总结
    查看>>
    mysql5.7安装
    查看>>
    mysql5.7性能调优my.ini
    查看>>
    MySQL5.7新增Performance Schema表
    查看>>
    Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
    查看>>
    Webpack 之 basic chunk graph
    查看>>
    Mysql5.7版本单机版my.cnf配置文件
    查看>>
    mysql5.7的安装和Navicat的安装
    查看>>
    mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
    查看>>
    Mysql8 数据库安装及主从配置 | Spring Cloud 2
    查看>>