NumPy 文档

From binaryoption
Jump to navigation Jump to search
Баннер1
    1. NumPy 文档

NumPy (Numerical Python) 是 Python 科学计算的基础库。它提供高性能的多维数组对象,以及用于处理这些数组的工具。对于在二元期权交易中进行量化分析、回测策略、以及数据处理的交易者来说,NumPy 是一个至关重要的工具。本文旨在为初学者提供一个全面的 NumPy 文档指南,帮助您快速上手并利用其强大功能。

概述

NumPy 的核心是 `ndarray` 对象,它代表一个同质多维数组。这意味着数组中的所有元素都必须是相同的数据类型。这种限制使得 NumPy 能够利用优化后的 C 代码进行高效的数值运算。

NumPy 提供了以下主要功能:

  • **多维数组对象 (`ndarray`):** 存储和操作数值数据。
  • **广播机制 (Broadcasting):** 允许不同形状的数组进行算术运算。
  • **数学函数:** 提供了大量的数学函数,包括线性代数、傅里叶变换、随机数生成等。
  • **线性代数运算:** 矩阵乘法、求逆、特征值分解等。
  • **随机数生成:** 生成各种分布的随机数,用于模拟和蒙特卡洛方法。
  • **文件输入/输出:** 读写数组数据到文件。

NumPy 的安装

可以使用 pip 包管理器轻松安装 NumPy:

``` pip install numpy ```

安装完成后,可以在 Python 解释器中导入 NumPy:

```python import numpy as np ```

`np` 是 NumPy 的标准别名,广泛应用于代码中。

ndarray 对象

`ndarray` 是 NumPy 的核心数据结构。它具有以下属性:

  • `shape`: 数组的形状,表示每个维度的大小。例如,`(3, 4)` 表示一个 3 行 4 列的数组。
  • `dtype`: 数组中元素的数据类型。例如,`int64`、`float64`、`bool` 等。
  • `ndim`: 数组的维度数。
  • `size`: 数组中元素的总数。
  • `itemsize`: 每个元素的大小,以字节为单位。

可以从 Python 列表、元组或其他数组创建 `ndarray` 对象:

```python import numpy as np

  1. 从 Python 列表创建数组

arr = np.array([1, 2, 3, 4, 5]) print(arr.shape) # 输出 (5,) print(arr.dtype) # 输出 int64 (取决于系统)

  1. 从 Python 列表创建二维数组

arr2d = np.array([[1, 2, 3], [4, 5, 6]]) print(arr2d.shape) # 输出 (2, 3)

  1. 指定数据类型

arr_float = np.array([1, 2, 3], dtype=np.float64) print(arr_float.dtype) # 输出 float64 ```

数组的创建

NumPy 提供了多种创建数组的方法:

  • `np.zeros(shape)`: 创建一个指定形状的零数组。
  • `np.ones(shape)`: 创建一个指定形状的 1 数组。
  • `np.empty(shape)`: 创建一个指定形状的空数组(未初始化)。
  • `np.arange(start, stop, step)`: 创建一个从 `start` 到 `stop` (不包括 `stop`) 的等差数组,步长为 `step`。
  • `np.linspace(start, stop, num)`: 创建一个从 `start` 到 `stop` 的等间隔数组,包含 `num` 个元素。
  • `np.random.rand(shape)`: 创建一个指定形状的随机数组,元素值在 [0, 1) 之间。
  • `np.random.randn(shape)`: 创建一个指定形状的随机数组,元素值服从标准正态分布。
  • `np.eye(N)`: 创建一个 N x N 的单位矩阵。

数组的索引和切片

与 Python 列表类似,可以使用索引和切片访问 `ndarray` 中的元素:

```python import numpy as np

arr = np.array([1, 2, 3, 4, 5])

  1. 索引

print(arr[0]) # 输出 1 print(arr[-1]) # 输出 5

  1. 切片

print(arr[1:4]) # 输出 [2 3 4] print(arr[:3]) # 输出 [1 2 3] print(arr[2:]) # 输出 [3 4 5]

  1. 二维数组的索引和切片

arr2d = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) print(arr2d[0, 1]) # 输出 2 print(arr2d[:2, 1:]) # 输出 [[2 3] [5 6]] ```

数组的运算

NumPy 提供了大量的数组运算函数:

  • **基本算术运算:** `+`, `-`, `*`, `/`, `**`
  • **通用函数 (ufunc):** `np.sin()`, `np.cos()`, `np.exp()`, `np.log()`, `np.sqrt()` 等。
  • **线性代数运算:** `np.dot()`, `np.linalg.inv()`, `np.linalg.eig()` 等。
  • **统计函数:** `np.mean()`, `np.std()`, `np.sum()`, `np.max()`, `np.min()` 等。

这些运算可以对整个数组或沿着指定轴进行。

广播机制

广播机制允许对不同形状的数组进行算术运算。NumPy 会自动将较小的数组“广播”到与较大数组相同的形状,然后再进行运算。

数组的变形

可以使用 `reshape()` 方法改变数组的形状:

```python import numpy as np

arr = np.arange(12) print(arr) # 输出 [ 0 1 2 3 4 5 6

立即开始交易

注册 IQ Option (最低存款 $10) 开设 Pocket Option 账户 (最低存款 $5)

加入我们的社区

订阅我们的 Telegram 频道 @strategybin 获取: ✓ 每日交易信号 ✓ 独家策略分析 ✓ 市场趋势警报 ✓ 新手教育资源

Баннер