博客
关于我
NumPy 库详细介绍-ChatGPT4o作答
阅读量:802 次
发布时间:2023-02-17

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

NumPy 库详细介绍

NumPy(Numerical Python)是 Python 中用于科学计算的基础库之一,提供了强大的数组对象 ndarray 以及大量的数学函数。它是许多科学计算和数据分析库的基础,包括 Pandas、Matplotlib 和 TensorFlow 等。NumPy 高效地处理大型数据集和矩阵运算,支持矢量化运算,使得科学计算更加高效。

安装与导入

NumPy 可以通过 pip 安装:

pip install numpy

导入方式如下:

import numpy as np

NumPy 核心概念

2.1 ndarray 对象

NumPy 的核心对象是 ndarray,它是一种多维数组对象,支持矢量化的数学运算和高级索引。相比 Python 原生的列表,ndarray 在内存占用和计算效率上要高得多。

  • 一维数组(Vector):类似于列表,包含一系列元素。
  • 二维数组(Matrix):常用于表示矩阵,可以进行线性代数计算。
  • 多维数组:可以处理三维及更高维度的数据。

创建 ndarray 的常见方式有:

import numpy as np# 一维数组arr = np.array([1, 2, 3, 4, 5])# 二维数组(矩阵)arr2d = np.array([[1, 2, 3], [4, 5, 6]])# 三维数组arr3d = np.array([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])

2.2 数组属性

ndarray 对象具有一些非常有用的属性,例如:

  • .shape:返回数组的维度(形状),例如 (3, 4) 表示 3 行 4 列。
  • .ndim:返回数组的维度数。
  • .size:返回数组的元素总数。
  • .dtype:返回数组元素的数据类型。
  • .itemsize:返回数组中每个元素的字节大小。
arr = np.array([1, 2, 3])print(arr.shape)  # 输出 (3,)print(arr.ndim)   # 输出 1print(arr.size)   # 输出 3print(arr.dtype)  # 输出 int64

2.3 数组的索引与切片

NumPy 数组的索引和切片方法比 Python 原生的列表更加灵活,可以使用整数索引、切片、布尔索引和花式索引。

arr = np.array([10, 20, 30, 40])print(arr[2])  # 输出 30arr = np.array([1, 2, 3, 4, 5])print(arr[1:4])  # 输出 [2, 3, 4]arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])print(arr2d[1, 2])  # 输出 6print(arr2d[0:2, 1:3])  # 输出 [[2, 3], [5, 6]]arr = np.array([1, 2, 3, 4, 5])print(arr[arr > 2])  # 输出 [3, 4, 5]arr = np.array([1, 2, 3, 4, 5])print(arr[[0, 2, 4]])  # 输出 [1, 3, 5]
  1. NumPy 常见操作
  2. 3.1 数组的数学运算

    NumPy 提供了许多高效的数学运算,支持按元素操作和广播机制。

    arr = np.array([1, 2, 3])arr2 = np.array([4, 5, 6])print(arr + arr2)  # 输出 [5, 7, 9]print(arr * arr2)  # 输出 [4, 10, 18]arr = np.array([1, 2, 3])arr2 = np.array([10])print(arr + arr2)  # 输出 [11, 12, 13]arr = np.array([0, np.pi/2, np.pi])print(np.sin(arr))  # 输出 [0., 1., 0.]

    3.2 聚合操作

    NumPy 提供了许多聚合函数,用于计算数组的最大值、最小值、均值、标准差等。

    arr = np.array([1, 2, 3, 4, 5])print(np.sum(arr))  # 输出 15print(np.mean(arr))  # 输出 3.0print(np.max(arr))  # 输出 5

    3.3 数组的形状与重塑

    arr = np.array([1, 2, 3, 4, 5, 6])reshaped = arr.reshape(2, 3)print(reshaped)
    arr = np.array([[1, 2], [3, 4]])flat = arr.flatten()print(flat)  # 输出 [1, 2, 3, 4]arr = np.array([[1, 2], [3, 4]])print(arr.T)  # 输出 [[1, 3], [2, 4]]

    3.4 线性代数操作

    A = np.array([[1, 2], [3, 4]])B = np.array([[5, 6], [7, 8]])print(np.dot(A, B))  # 或 A @ BA = np.array([[1, 2], [3, 4]])inv_A = np.linalg.inv(A)print(inv_A)A = np.array([[4, -2], [1, 1]])eigenvalues, eigenvectors = np.linalg.eig(A)print("Eigenvalues:", eigenvalues)print("Eigenvectors:", eigenvectors)

    3.5 随机数生成

    arr = np.random.randint(1, 10, size=5)print(arr)arr = np.random.rand(3, 2)print(arr)arr = np.random.randn(2, 3)print(arr)

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

你可能感兴趣的文章
Nginx配置参数中文说明
查看>>
Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
查看>>
Nginx配置实例-负载均衡实例:平均访问多台服务器
查看>>
NIFI大数据进阶_连接与关系_设置数据流负载均衡_设置背压_设置展现弯曲_介绍以及实际操作---大数据之Nifi工作笔记0027
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NIO Selector实现原理
查看>>
nio 中channel和buffer的基本使用
查看>>
NISP一级,NISP二级报考说明,零基础入门到精通,收藏这篇就够了
查看>>
NI笔试——大数加法
查看>>
NLP 基于kashgari和BERT实现中文命名实体识别(NER)
查看>>
Nmap扫描教程之Nmap基础知识
查看>>
Nmap端口扫描工具Windows安装和命令大全(非常详细)零基础入门到精通,收藏这篇就够了
查看>>
NMAP网络扫描工具的安装与使用
查看>>
NN&DL4.1 Deep L-layer neural network简介
查看>>
NN&DL4.3 Getting your matrix dimensions right
查看>>
NN&DL4.8 What does this have to do with the brain?
查看>>
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
No Datastore Session bound to thread, and configuration does not allow creation of non-transactional
查看>>
No fallbackFactory instance of type class com.ruoyi---SpringCloud Alibaba_若依微服务框架改造---工作笔记005
查看>>
No Feign Client for loadBalancing defined. Did you forget to include spring-cloud-starter-loadbalanc
查看>>