博客
关于我
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/

    你可能感兴趣的文章
    npm install 报错 no such file or directory 的解决方法
    查看>>
    npm install 权限问题
    查看>>
    npm install报错,证书验证失败unable to get local issuer certificate
    查看>>
    npm install无法生成node_modules的解决方法
    查看>>
    npm install的--save和--save-dev使用说明
    查看>>
    npm node pm2相关问题
    查看>>
    npm run build 失败Compiler server unexpectedly exited with code: null and signal: SIGBUS
    查看>>
    npm run build报Cannot find module错误的解决方法
    查看>>
    npm run build部署到云服务器中的Nginx(图文配置)
    查看>>
    npm run dev 和npm dev、npm run start和npm start、npm run serve和npm serve等的区别
    查看>>
    npm run dev 报错PS ‘vite‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。
    查看>>
    npm scripts 使用指南
    查看>>
    npm should be run outside of the node repl, in your normal shell
    查看>>
    npm start运行了什么
    查看>>
    npm WARN deprecated core-js@2.6.12 core-js@<3.3 is no longer maintained and not recommended for usa
    查看>>
    npm 下载依赖慢的解决方案(亲测有效)
    查看>>
    npm 安装依赖过程中报错:Error: Can‘t find Python executable “python“, you can set the PYTHON env variable
    查看>>
    npm.taobao.org 淘宝 npm 镜像证书过期?这样解决!
    查看>>
    npm—小记
    查看>>
    npm上传自己的项目
    查看>>