Python常用库-nump的使用

文章目录

      • [安装 NumPy](#安装 NumPy)
      • [导入 NumPy](#导入 NumPy)
      • 创建数组
        • [1. 使用列表创建数组](#1. 使用列表创建数组)
        • [2. 多维数组](#2. 多维数组)
        • [3. 使用特殊函数](#3. 使用特殊函数)
      • 数组的基本操作
        • [1. 数组形状和大小](#1. 数组形状和大小)
        • [2. 数据类型](#2. 数据类型)
        • [3. 转换数据类型](#3. 转换数据类型)
        • [4. 数组索引](#4. 数组索引)
        • [5. 数组切片](#5. 数组切片)
        • [6. 维度转换](#6. 维度转换)
        • [7. 数组连接](#7. 数组连接)
        • [8. 数组分割](#8. 数组分割)
      • 数学运算
        • [1. 算术运算](#1. 算术运算)
        • [2. 广播机制](#2. 广播机制)
        • [3. 统计函数](#3. 统计函数)
        • [4. 最大最小值](#4. 最大最小值)
        • [5. 排序](#5. 排序)
      • 索引与切片
        • [1. 索引](#1. 索引)
        • [2. 切片](#2. 切片)
        • [3. 高级索引](#3. 高级索引)
      • 条件操作
        • [1. 条件选择](#1. 条件选择)
        • [2. where 函数](#2. where 函数)
      • 复杂操作
        • [1. 矩阵乘法](#1. 矩阵乘法)
        • [2. 线性代数](#2. 线性代数)
        • [3. 矩阵的逆](#3. 矩阵的逆)

NumPy 是 Python 编程语言中一个非常强大的库,主要用于进行数值计算。它提供了一个高效的多维数组对象以及用于操作这些数组的工具。NumPy 的核心特性之一是它的 ndarray(n-dimensional array),这是一个同质数据类型的多维数组。

下面是一些关于 NumPy 使用的详细说明:

安装 NumPy

确保已经安装了 NumPy。可以通过 pip 来安装:

bash 复制代码
pip install numpy

导入 NumPy

通常会使用别名 np 来导入 NumPy:

python 复制代码
import numpy as np

创建数组

1. 使用列表创建数组
python 复制代码
arr = np.array([1, 2, 3])
print(arr)
# 输出: [1 2 3]
2. 多维数组
python 复制代码
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr)
# 输出:
# [[1 2 3]
#  [4 5 6]]
3. 使用特殊函数
  • 全零数组 (zeros):

    python 复制代码
    arr = np.zeros((2, 3))
    print(arr)
    # 输出:
    # [[0. 0. 0.]
    #  [0. 0. 0.]]
  • 全一数组 (ones):

    python 复制代码
    arr = np.ones((2, 3))
    print(arr)
    # 输出:
    # [[1. 1. 1.]
    #  [1. 1. 1.]]
  • 空数组 (empty):

    python 复制代码
    arr = np.empty((2, 3))
    print(arr)
    # 输出:
    # [[0. 0. 0.]   # 数值不确定
    #  [0. 0. 0.]]
  • 等差数组 (arange):

    python 复制代码
    arr = np.arange(0, 10, 2)
    print(arr)
    # 输出: [0 2 4 6 8]
  • 等比数组 (linspace):

    python 复制代码
    arr = np.linspace(0, 10, 5)
    print(arr)
    # 输出: [ 0.   2.5  5.   7.5 10. ]
  • 随机数组 (random.rand):

    python 复制代码
    arr = np.random.rand(2, 3)
    print(arr)
    # 输出:
    # [[0.912 0.544 0.365]   # 数值随机
    #  [0.761 0.621 0.842]]

数组的基本操作

1. 数组形状和大小
python 复制代码
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr.shape)  # 输出: (2, 3)
print(arr.size)   # 输出: 6
2. 数据类型
python 复制代码
arr = np.array([1, 2, 3], dtype=np.float32)
print(arr.dtype)  # 输出: float32
3. 转换数据类型
python 复制代码
arr = np.array([1, 2, 3])
arr = arr.astype(np.float32)
print(arr.dtype)  # 输出: float32
4. 数组索引
python 复制代码
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, 1])  # 输出: 2
5. 数组切片
python 复制代码
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, :2])  # 输出: [1 2]
6. 维度转换
python 复制代码
arr = np.array([1, 2, 3])
arr = arr.reshape(3, 1)
print(arr)
# 输出:
# [[1]
#  [2]
#  [3]]
7. 数组连接
python 复制代码
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = np.concatenate((a, b))
print(c)
# 输出: [1 2 3 4 5 6]
8. 数组分割
python 复制代码
arr = np.array([1, 2, 3, 4, 5, 6])
newarr = np.split(arr, 3)
print(newarr)
# 输出: [array([1, 2]), array([3, 4]), array([5, 6])]

数学运算

1. 算术运算
python 复制代码
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])
c = a + b
print(c)
# 输出: [5 7 9]
2. 广播机制
python 复制代码
a = np.array([1, 2, 3])
b = 2
c = a * b
print(c)
# 输出: [2 4 6]
3. 统计函数
python 复制代码
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.sum(arr))     # 输出: 21
print(np.mean(arr))    # 输出: 3.5
print(np.std(arr))     # 输出: 1.707825127659933
4. 最大最小值
python 复制代码
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.max(arr))  # 输出: 6
print(np.min(arr))  # 输出: 1
5. 排序
python 复制代码
arr = np.array([3, 1, 2])
sorted_arr = np.sort(arr)
print(sorted_arr)
# 输出: [1 2 3]

索引与切片

1. 索引
python 复制代码
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, 1])  # 输出: 2
2. 切片
python 复制代码
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[0, 1:3])  # 输出: [2 3]
3. 高级索引
python 复制代码
arr = np.array([[1, 2, 3], [4, 5, 6]])
rows = np.array([0, 1])
cols = np.array([1, 2])
print(arr[rows, cols])  # 输出: [2 6]

条件操作

1. 条件选择
python 复制代码
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(arr[arr > 3])  # 输出: [4 5 6]
2. where 函数
python 复制代码
arr = np.array([[1, 2, 3], [4, 5, 6]])
print(np.where(arr > 3, arr, -1))  # 输出: [[-1 -1 -1] [ 4  5  6]]

复杂操作

1. 矩阵乘法
python 复制代码
a = np.array([[1, 2], [3, 4]])
b = np.array([[5, 6], [7, 8]])
c = np.dot(a, b)
print(c)
# 输出:
# [[19 22]
#  [43 50]]
2. 线性代数
python 复制代码
a = np.array([[1, 2], [3, 4]])
b = np.array([5, 6])
x = np.linalg.solve(a, b)
print(x)
# 输出: [ -4.   4.5]
3. 矩阵的逆
python 复制代码
a = np.array([[1, 2], [3, 4]])
inv_a = np.linalg.inv(a)
print(inv_a)
# 输出:
# [[-2.   1. ]
#  [ 1.5 -0.5]]
相关推荐
深度学习lover1 小时前
<项目代码>YOLOv8 苹果腐烂识别<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·苹果腐烂识别
XiaoLeisj2 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
API快乐传递者2 小时前
淘宝反爬虫机制的主要手段有哪些?
爬虫·python
励志成为嵌入式工程师3 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉3 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer3 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Peter_chq3 小时前
【操作系统】基于环形队列的生产消费模型
linux·c语言·开发语言·c++·后端
阡之尘埃4 小时前
Python数据分析案例61——信贷风控评分卡模型(A卡)(scorecardpy 全面解析)
人工智能·python·机器学习·数据分析·智能风控·信贷风控
记录成长java5 小时前
ServletContext,Cookie,HttpSession的使用
java·开发语言·servlet
前端青山5 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js