Numpy库的功能介绍

NumPy 是 Python 中用于科学计算的基础库之一。它提供了支持高效操作大型多维数组和矩阵的功能,并且包含了大量的数学函数库。以下是对 NumPy 的详细介绍,包括常用功能和示例代码。

1. 安装 NumPy

如果尚未安装 NumPy,可以使用以下命令进行安装:

pip install numpy

2. NumPy 基础

创建数组

NumPy 的核心是 ndarray 对象,它是一个多维数组。你可以通过多种方式创建 ndarray

import numpy as np

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

# 创建多维数组
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)  # 输出: [[1 2 3]
            #       [4 5 6]]

# 创建全零数组
arr = np.zeros((2, 3))
print(arr)  # 输出: [[0. 0. 0.]
            #       [0. 0. 0.]]

# 创建全一数组
arr = np.ones((2, 3))
print(arr)  # 输出: [[1. 1. 1.]
            #       [1. 1. 1.]]

# 创建单位矩阵
arr = np.eye(3)
print(arr)  # 输出: [[1. 0. 0.]
            #       [0. 1. 0.]
            #       [0. 0. 1.]]

# 创建随机数组
arr = np.random.rand(2, 3)
print(arr)
数组属性

NumPy 数组具有一些属性,可以帮助你了解数组的维度、形状和数据类型。

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

print(arr.ndim)     # 数组维度,输出: 2
print(arr.shape)    # 数组形状,输出: (2, 3)
print(arr.size)     # 数组元素总数,输出: 6
print(arr.dtype)    # 数组元素的数据类型,输出: int64
print(arr.itemsize) # 每个元素的字节大小,输出: 8
数组运算

NumPy 提供了大量的运算函数,使得数组运算非常高效。

arr1 = np.array([1, 2, 3])
arr2 = np.array([4, 5, 6])

# 数组加法
print(arr1 + arr2)  # 输出: [5 7 9]

# 数组减法
print(arr1 - arr2)  # 输出: [-3 -3 -3]

# 数组乘法
print(arr1 * arr2)  # 输出: [ 4 10 18]

# 数组除法
print(arr1 / arr2)  # 输出: [0.25 0.4  0.5 ]

# 数组与标量运算
print(arr1 * 2)     # 输出: [2 4 6]

3. NumPy 高级功能

数组切片和索引

NumPy 数组可以进行切片和索引操作,这使得数据操作更加方便。

arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 索引单个元素
print(arr[0, 2])  # 输出: 3

# 切片操作
print(arr[1:, 1:])  # 输出: [[5 6]
                    #       [8 9]]

# 布尔索引
print(arr[arr > 5])  # 输出: [6 7 8 9]

# 花式索引
print(arr[[0, 2], [1, 2]])  # 输出: [2 9]
数组形状操作

NumPy 提供了多种改变数组形状的方法。

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

# 数组展平
print(arr.ravel())  # 输出: [1 2 3 4 5 6]

# 数组转置
print(arr.T)  # 输出: [[1 4]
              #       [2 5]
              #       [3 6]]

# 数组重塑
print(arr.reshape(3, 2))  # 输出: [[1 2]
                          #       [3 4]
                          #       [5 6]]
数组拼接和分割

NumPy 提供了拼接和分割数组的函数。

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([[7, 8, 9], [10, 11, 12]])

# 数组拼接
print(np.concatenate((arr1, arr2), axis=0))  # 纵向拼接
# 输出: [[ 1  2  3]
#       [ 4  5  6]
#       [ 7  8  9]
#       [10 11 12]]

print(np.concatenate((arr1, arr2), axis=1))  # 横向拼接
# 输出: [[ 1  2  3  7  8  9]
#       [ 4  5  6 10 11 12]]

# 数组分割
print(np.hsplit(arr1, 3))  # 按列分割
# 输出: [array([[1],
#        [4]]), array([[2],
#        [5]]), array([[3],
#        [6]])]

print(np.vsplit(arr2, 2))  # 按行分割
# 输出: [array([[7, 8, 9]]), array([[10, 11, 12]])]

4. NumPy 广播机制

广播是一种用于对不同形状的数组进行算术运算的强大机制。

arr1 = np.array([[1, 2, 3], [4, 5, 6]])
arr2 = np.array([1, 2, 3])

# 广播机制
print(arr1 + arr2)  # 输出: [[2 4 6]
                    #       [5 7 9]]

5. 数学和统计函数

NumPy 提供了大量的数学和统计函数,用于数组的聚合和分析。

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

# 数组求和
print(arr.sum())  # 输出: 21

# 最大值和最小值
print(arr.max())  # 输出: 6
print(arr.min())  # 输出: 1

# 按轴求和
print(arr.sum(axis=0))  # 输出: [5 7 9]
print(arr.sum(axis=1))  # 输出: [ 6 15]

# 平均值和标准差
print(arr.mean())  # 输出: 3.5
print(arr.std())   # 输出: 1.707825127659933

6. 线性代数

NumPy 包含一些线性代数函数,如矩阵乘法、逆矩阵、特征值分解等。

arr1 = np.array([[1, 2], [3, 4]])
arr2 = np.array([[5, 6], [7, 8]])

# 矩阵乘法
print(np.dot(arr1, arr2))  # 输出: [[19 22]
                           #       [43 50]]

# 逆矩阵
print(np.linalg.inv(arr1))  # 输出: [[-2.   1. ]
                            #       [ 1.5 -0.5]]

# 特征值和特征向量
values, vectors = np.linalg.eig(arr1)
print(values)  # 输出: [-0.37228132  5.37228132]
print(vectors) # 输出: [[-0.82456484 -0.41597356]
              #       [ 0.56576746 -0.90937671]]

7. NumPy 随机模块

NumPy 的随机模块提供了生成随机数和随机样本的函数。

# 生成均匀分布的随机数
rand_nums = np.random.rand(5)
print(rand_nums)  # 输出: [0.5488135  0.71518937 0.60276338 0.54488318 0.4236548 ]

# 生成正态分布的随机数
rand_nums = np.random.randn(5)
print(rand_nums)  # 输出: [ 0.14404357  1.45427351  0.76103773  0.12167502  0.443
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

yiruzhao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值