利用Python进行数据分析(4) NumPy基础: ndarray简单介绍

利用Python进行数据分析(4) NumPy基础: ndarray简单介绍
最新回答
锁骨草莓印

2026-06-22 01:52:40

NumPy 是 Python 科学计算的基础包,其核心数据结构是 ndarray(N-dimensional array,多维数组)。

一、ndarray 的核心特性
  1. 多维结构

    支持任意维度的数组(如 1D 向量、2D 矩阵、3D 张量等),适合处理数值型数据集。

    示例:

    import numpy as nparr_1d = np.array([1, 2, 3]) # 1D 数组arr_2d = np.array([[1, 2], [3, 4]]) # 2D 数组
  2. 同构数据类型

    所有元素必须是相同类型(如全为 int32 或 float64),确保计算高效。

    类型可通过 dtype 属性查看:

    print(arr_1d.dtype) # 输出: int64(默认推断类型)
  3. 高效运算

    支持向量化操作(无需显式循环),底层用 C 实现,速度远超 Python 原生列表。

    示例:

    arr = np.array([1, 2, 3])print(arr * 2) # 输出: [2 4 6](每个元素乘以 2)
二、ndarray 的创建方法
  1. 从序列转换

    使用 np.array() 将列表、元组等转换为 ndarray:

    lst = [1, 2, 3]arr = np.array(lst)
  2. 特殊数组生成

    全零/全一数组:zeros()、ones()

    zeros_arr = np.zeros((2, 3)) # 2x3 的全 0 数组ones_arr = np.ones(5) # 长度为 5 的全 1 数组

    未初始化数组:empty()(内容随机,速度快)

    empty_arr = np.empty((2, 2)) # 可能包含内存垃圾值

    范围数组:arange()(类似 range,但返回数组)

    range_arr = np.arange(0, 10, 2) # 输出: [0 2 4 6 8]
  3. 指定数据类型

    通过 dtype 参数显式定义类型:

    float_arr = np.array([1, 2, 3], dtype=np.float64)
三、数据类型与转换
  1. 支持的类型

    整数:int8, int32, uint64 等

    浮点数:float16, float64

    布尔型:bool

    字符串:str 或 U(Unicode)

  2. 类型转换

    使用 astype() 方法(返回新数组):

    int_arr = np.array([1.5, 2.7, 3.9])new_arr = int_arr.astype(np.int32) # 小数部分被截断 → [1, 2, 3]

    字符串转数值(若元素可解析):

    str_arr = np.array(['1', '2', '3'])num_arr = str_arr.astype(np.int8)
四、ndarray 的基本操作
  1. 算术运算

    元素级运算(加减乘除、幂次等):

    a = np.array([1, 2])b = np.array([3, 4])print(a + b) # 输出: [4 6]print(a 2) # 输出: [1 4]
  2. 广播机制

    不同形状的数组可自动扩展运算(如标量与数组):

    arr = np.array([[1, 2], [3, 4]])print(arr + 10) # 每个元素加 10
  3. 索引与切片

    类似列表,但支持多维索引:

    arr_2d = np.array([[1, 2, 3], [4, 5, 6]])print(arr_2d[1, 2]) # 输出: 6(第 2 行第 3 列)print(arr_2d[:, 1]) # 输出: [2 5](所有行的第 2 列)
五、实际应用示例

场景:计算一组数据的平方根

data = np.array([4, 9, 16])sqrt_data = np.sqrt(data) # 输出: [2. 3. 4.]

场景:矩阵乘法

mat_a = np.array([[1, 2], [3, 4]])mat_b = np.array([[5, 6], [7, 8]])result = np.dot(mat_a, mat_b) # 或 mat_a @ mat_b六、注意事项
  1. 内存连续性

    ndarray 默认是内存连续的,但切片操作可能返回视图(非副本),修改视图会影响原数组。

  2. 性能优化

    避免频繁类型转换或小数组操作,尽量使用向量化计算。

通过 ndarray,NumPy 为科学计算提供了高效、便捷的底层支持,是 Pandas、SciPy 等库的基础。掌握其创建、运算和类型处理是数据分析的关键一步。