NumPy - Ndarray 对象
NumPy - ndarray 对象
Section titled “NumPy - ndarray 对象”NumPy 库的基石是 N 维数组,由 ndarray 类表示。ndarray 本质上是一个通用的容器,旨在高效地存储和操作大量同质数据(相同类型元素)的数据集。可以将其视为一个数值网格,所有数值都具有相同的数据类型,并通过一个非负整数元组进行索引。
ndarray 的主要特性:
- **同质类型:**所有元素必须是相同的数据类型(例如,全部为
int64或全部为float64)。这有助于优化存储和计算。 - **固定大小:**数组的大小(元素数量)在创建时是固定的。改变大小通常涉及创建一个新数组并复制数据。
- **高效操作:**数学和逻辑运算可以对整个数组执行(向量化),无需显式的 Python 循环,从而利用高度优化的 C 代码。
- **多维:**数组可以有多个维度(轴),允许表示向量(一维)、矩阵(二维)、张量(三维以上)。
每个 ndarray 都关联一个 数据类型对象(dtype),描述数组中存储的数据类型(例如,int32、float64、complex128)。数组中的每个元素都占用由 dtype 确定的固定大小的内存块。
当您访问 ndarray 中的单个元素时(例如,my_array[0, 0]),通常会得到一个 NumPy 标量对象(如 numpy.int64 或 numpy.float64)。这些对象与标准的 Python 类型(int、float)不同,但通常行为相似(“鸭子类型”)。
使用 numpy.array() 创建 ndarray 对象
Section titled “使用 numpy.array() 创建 ndarray 对象”创建 ndarray 的最基本方法是使用 numpy.array() 函数。它将各种输入数据结构(如 Python 列表、元组或其他类似数组的对象)转换为 NumPy 数组。
numpy.array(object, dtype=None, *, copy=True, order='K', subok=False, ndmin=0, like=None)关键参数:
| 参数 | 描述 |
|---|---|
object | 输入数据,通常是嵌套序列(列表或元组)或其他类似数组的对象。 |
dtype | 可选。数组元素所需的数据类型(例如 np.float64、np.int32、np.bool_)。如果为 None,NumPy 会尝试推断最佳类型。 |
copy | 可选。如果为 True(默认值),函数总是创建输入对象的一个新副本。如果为 False,只有在必要时才会创建副本(例如,如果输入本身不是正确 dtype 的 ndarray)。 |
order | 可选。指定内存布局:‘C’(行主序,C 风格)、‘F’(列主序,Fortran 风格)、‘A’(任意,如果输入是 Fortran 连续的则为 Fortran 风格)、‘K’(保持输入的布局,默认值)。 |
subok | 可选。如果为 False(默认值),返回的数组将是基类 ndarray。如果为 True,则子类(如 numpy.matrix)会直接通过。 |
ndmin | 可选。指定结果数组应具有的最小维度数。必要时会在形状前添加轴。 |
让我们看一些创建示例:
示例 1:从列表创建一维数组
Section titled “示例 1:从列表创建一维数组”import numpy as np
# Create from a list of integersa = np.array([1, 2, 3, 4])print(f"Array: {a}")print(f"Type: {type(a)}")print(f"Data Type (dtype): {a.dtype}")输出:
Array: [1 2 3 4]Type: <class 'numpy.ndarray'>Data Type (dtype): int64示例 2:创建二维数组(矩阵)
Section titled “示例 2:创建二维数组(矩阵)”import numpy as np
# Create from a list of listsb = np.array([[1.5, 2.0, 3.0], [4.0, 5.0, 6.0]])print(f"Array:\n{b}")print(f"Data Type (dtype): {b.dtype}")print(f"Shape: {b.shape}") # (rows, columns)print(f"Dimensions: {b.ndim}")输出:
Array:[[1.5 2. 3. ] [4. 5. 6. ]]Data Type (dtype): float64Shape: (2, 3)Dimensions: 2示例 3:指定最小维度
Section titled “示例 3:指定最小维度”import numpy as np
# Ensure the array is at least 2Dc = np.array([1, 2, 3], ndmin=2)print(f"Array (ndmin=2):\n{c}")print(f"Shape: {c.shape}")输出:
Array (ndmin=2):[[1 2 3]]Shape: (1, 3)示例 4:指定数据类型
Section titled “示例 4:指定数据类型”import numpy as np
# Create an array with complex numbersd = np.array([1, 2, 3], dtype=np.complex128)print(f"Array (complex): {d}")print(f"Data Type (dtype): {d.dtype}")输出:
Array (complex): [1.+0.j 2.+0.j 3.+0.j]Data Type (dtype): complex128在内部,ndarray 管理着一块连续的计算机内存。索引方案将元素索引(如 [1, 2])映射到该内存块中的特定位置。order 参数(‘C’ 或 ‘F’)影响多维数组元素在此线性内存块中的排列方式。
了解更多关于 ndarray 的信息,请参阅官方 ndarray 文档和 numpy.array 函数文档。