数据挖掘Numpy库

发布于:2025-08-05 ⋅ 阅读:(14) ⋅ 点赞:(0)

NumPy 的安装与导入

在使用 NumPy 之前,首先需要完成安装并将其导入到代码中。

安装方法

NumPy 的安装非常便捷,主要有以下两种常用方式:

  • 使用 pip 命令:在命令行中输入pip install numpy,即可通过 Python 的包管理工具 pip 进行安装。如果官方源下载速度较慢,可以使用清华源,命令为pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy
  • 使用 conda 命令:如果使用 Anaconda 发行版,可在命令行中输入conda install numpy进行安装。

导入方式

安装完成后,在 Python 代码中通常使用以下方式导入 NumPy,并为其设置别名np(这是社区约定俗成的做法,可简化代码书写):

python

运行

import numpy as np

Ndarray:NumPy 的核心数据结构

Ndarray(N-dimensional array,N 维数组)是 NumPy 中最核心的数据结构,它是一系列同类型数据的集合,以 0 下标为开始进行元素索引,能够高效地存储和处理多维数值数据。

维度概念

Ndarray 的维度(也称为轴,axis)是其重要特性。例如:

  • 一维数组只有 axis 0(可以理解为行方向)。
  • 二维数组有 axis 0(行方向)和 axis 1(列方向)。
  • 三维数组则有 axis 0、axis 1 和 axis 2,分别对应不同的维度方向。

创建 Ndarray 数组的常用函数

NumPy 提供了多种函数来创建 Ndarray 数组,以下是一些常用函数及其用法:

1. array () 函数

该函数用于从数组或嵌套的数列创建 Ndarray 数组,其原型为:

python

运行

numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin=0)

参数说明:

  • object:数组或嵌套的数列。
  • dtype:数组元素的数据类型,可选。
  • copy:对象是否需要复制,可选。
  • order:创建数组的样式,C 为行方向,F 为列方向,A 为任意方向(默认)。
  • subok:默认返回一个与基类类型一致的数组。
  • ndmin:指定生成数组的最小维度。

示例:

python

运行

import numpy as np

# 从列表创建一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)  # 输出:[1 2 3 4 5]

# 从嵌套列表创建二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6]], dtype=np.float64)
print(arr2)
# 输出:
# [[1. 2. 3.]
#  [4. 5. 6.]]
2. zeros () 函数

创建指定大小的数组,数组元素以 0 填充,原型为:

python

运行

numpy.zeros(shape, dtype=float, order='C')

参数shape指定数组形状,dtype为数据类型(可选),order指定存储顺序('C' 为行优先,'F' 为列优先)。

示例:

python

运行

# 创建一个长度为5的一维全0数组
arr_zeros = np.zeros(5)
print(arr_zeros)  # 输出:[0. 0. 0. 0. 0.]
3. ones () 函数

创建指定形状的数组,数组元素以 1 填充,原型为:

python

运行

numpy.ones(shape, dtype=None, order='C')

示例:

python

运行

# 创建一个3行2列的二维全1数组,数据类型为int32
arr_ones = np.ones([3, 2], dtype='i4')
print(arr_ones)
# 输出:
# [[1 1]
#  [1 1]
#  [1 1]]
4. full () 函数

创建指定形状的数组,数组元素以指定的fill_value填充,原型为:

python

运行

numpy.full(shape, fill_value, dtype=None, order='C')

示例:

python

运行

# 创建一个3行2列的二维数组,元素值均为1024,数据类型为int32
arr_full = np.full([3, 2], fill_value=1024, dtype='i4')
print(arr_full)
# 输出:
# [[1024 1024]
#  [1024 1024]
#  [1024 1024]]
5. eye () 函数

创建对角线为 1、其他位置为 0 的数组(单位矩阵),原型为:

python

运行

numpy.eye(N, M=None, k=0, dtype=float, order='C')

参数N为行数量,M为列数量(默认等于行数量)。

示例:

python

运行

# 创建一个10x10的单位矩阵,数据类型为int32
arr_eye = np.eye(10, dtype='i4')
print(arr_eye)
# 输出为10x10的矩阵,对角线元素为1,其余为0
6. arange () 函数

类似于 Python 内置的range()函数,用于创建一个等差数列的数组。

示例:

python

运行

# 创建从1到10(不包含10)、步长为2的数组
arr_arange = np.arange(1, 11, 2)
print(arr_arange)  # 输出:[1 3 5 7 9]
7. linspace () 函数

创建一个一维数组,数组由等差数列构成,原型为:

python

运行

numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)

参数start为序列的起始值,stop为序列的终止值(如果endpoint为 True,则包含该值),num为生成的样本数量。

示例:

python

运行

# 创建从0到10(包含10)、共5个元素的等差数列
arr_linspace = np.linspace(0, 10, 5)
print(arr_linspace)  # 输出:[ 0.   2.5  5.   7.5 10. ]
8. 随机数生成函数
  • random.rand():生成 [0, 1) 之间的随机数。

    python

    运行

    # 生成一个2行3列的随机数组
    arr_rand = np.random.rand(2, 3)
    print(arr_rand)
    
  • random.randint():生成指定范围内的随机整数。

    python

    运行

    # 生成3个在[1, 10)范围内的随机整数
    arr_randint = np.random.randint(1, 10, size=3)
    print(arr_randint)
    
  • random.randn():生成具有标准正态分布(均值为 0,标准差为 1)的随机数。

    python

    运行

    # 生成一个2行4列的标准正态分布随机数组
    arr_randn = np.random.randn(2, 4)
    print(arr_randn)
    

Ndarray 数组的属性

Ndarray 数组具有多个重要属性,通过这些属性可以了解数组的基本信息:

属性 说明
ndim 秩,即轴的数量或维度的数量
shape 数组的维度,对于矩阵,为 n 行 m 列
size 数组元素的总个数,相当于shape中 n*m 的值
dtype 数组元素的数据类型
itemsize 数组中每个元素的大小,以字节为单位

示例:

python

运行

import numpy as np

# 创建一个2行3列的二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])

print("数组维度(ndim):", arr.ndim)  # 输出:2
print("数组形状(shape):", arr.shape)  # 输出:(2, 3)
print("数组元素总个数(size):", arr.size)  # 输出:6
print("数组元素数据类型(dtype):", arr.dtype)  # 输出:int64

我们还可以通过修改shape属性来改变数组的维度:

python

运行

arr.shape = (3, 2)
print("修改后的数组形状:", arr.shape)  # 输出:(3, 2)
print("修改后的数组:")
print(arr)
# 输出:
# [[1 2]
#  [3 4]
#  [5 6]]

切片和索引

Ndarray 对象的内容可以通过索引或切片来访问和修改,与 Python 中列表的切片操作类似。数组可以基于 0-n 的下标进行索引,切片则可以通过设置startstopstep参数从原数组中切割出一个新数组。

基本操作示例

python

运行

import numpy as np

# 创建一个5行3列的二维数组
arr = np.arange(15).reshape(5, 3)
print("原数组:")
print(arr)
# 输出:
# [[ 0  1  2]
#  [ 3  4  5]
#  [ 6  7  8]
#  [ 9 10 11]
#  [12 13 14]]

# 索引第2行(下标从0开始)
print("第2行:", arr[2])  # 输出:[6 7 8]

# 索引第2行第1列的元素
print("第2行第1列的元素:", arr[2][1])  # 输出:7

# 切片获取从第2行开始的所有行
print("从第2行开始的所有行:")
print(arr[2:])
# 输出:
# [[ 6  7  8]
#  [ 9 10 11]
#  [12 13 14]]

# 使用省略号“...”切片
# 获取所有行的第1列元素
print("所有行的第1列元素:", arr[..., 1])  # 输出:[ 1  4  7 10 13]

课堂练习实践

以下是一些基于上述知识的课堂练习及解答:

练习 1:生成一个 3x3 的对角矩阵

python

运行

import numpy as np

# 生成3x3的对角矩阵(单位矩阵)
diag_matrix = np.eye(3, dtype='i4')
print("3x3的对角矩阵:")
print(diag_matrix)

练习 2:创建一个长度为 10 的数组,值为 0~1 之间,不包含首尾

python

运行

import numpy as np

# 使用linspace函数,endpoint设为False,生成不包含1的数组
arr = np.linspace(0, 1, num=10, endpoint=False)
print("长度为10,值在0~1之间(不包含首尾)的数组:")
print(arr)

练习 3:创建一个 2x3 的二维数组,并分别输出它的维度、行数和列数、元素个数

python

运行

import numpy as np

# 创建2x3的二维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
print("二维数组:")
print(arr)
print("维度(ndim):", arr.ndim)
print("行数和列数(shape):", arr.shape)
print("元素个数(size):", arr.size)

网站公告

今日签到

点亮在社区的每一天
去签到