当前位置: 首页 > news >正文

NumPy 库介绍:核心 API 详解

NumPy 是 Python 中用于科学计算的基础库,提供了高性能的多维数组对象和用于操作这些数组的工具。以下是 NumPy 中一些最常用的 API 介绍:

1. array

创建 NumPy 数组的基本方法。

import numpy as np# 从列表创建数组
arr_1 = np.array([1, 2, 3, 4, 5])
print(arr_1)  
# [1 2 3 4 5]# 创建二维数组
arr_2 = np.array([[1, 2, 3], [4, 5, 6]])
print(arr_2)# [[1 2 3]
#  [4 5 6]]

2. zeros

创建指定形状的全零数组。

# 创建一维全零数组
zeros_1 = np.zeros(5)
print(zeros_1)  
# 输出: [0. 0. 0. 0. 0.]# 创建二维全零数组 (3行4列)
zeros_2 = np.zeros((3, 4))
print(zeros_2)
# [[0. 0. 0. 0.]
#  [0. 0. 0. 0.]
#  [0. 0. 0. 0.]]

3. arange

类似于 Python 的 range() 函数,但返回 NumPy 数组。

# 从0到9的数组
arr_1 = np.arange(10)
print(arr_1)  
# 输出: [0 1 2 3 4 5 6 7 8 9]# 从5到14的数组
arr_2 = np.arange(5, 15)
print(arr_2)  
# 输出: [ 5  6  7  8  9 10 11 12 13 14]# 从0到20,步长为3
arr_3 = np.arange(0, 20, 3)
print(arr_3)  
# 输出: [ 0  3  6  9 12 15 18]

4. random.randint

生成随机整数数组。

# 生成0到10之间的随机整数 (不包括10)
random_int = np.random.randint(10)
print(random_int)  
# 7# 生成5个0到10之间的随机整数
random_int_list = np.random.randint(0, 10, size=5)
print(random_int_list)  
# [3 7 2 8 1]# 生成3x3的随机整数矩阵 (10到20之间)
random_matrix = np.random.randint(10, 20, size=(3, 3))
print(random_matrix)
# [[14 11 16]
#  [18 12 19]
#  [13 10 17]]

5. max

找出数组中的最大值。

arr = np.array([1, 5, 3, 9, 2])# 整个数组的最大值
max_val = np.max(arr)
print(max_val)  
# 9# 二维数组
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 每列的最大值
max_col = np.max(arr, axis=0)
print(max_col)   
# [7 8 9]# 每行的最大值
max_row = np.max(arr, axis=1)
print(max_row)  
# [3 6 9]

6. min

找出数组中的最小值。

arr_1 = np.array([5, 2, 8, 1, 7])# 整个数组的最小值
min_val = np.min(arr_1)
print(min_val)  
# 1# 二维数组
arr_2 = np.array([[4, 5, 6], [1, 2, 3], [7, 8, 9]])# 每列的最小值
min_col = np.min(arr_2, axis=0)
print(min_col)  
# [1 2 3]# 每行的最小值
min_row = np.min(arr_2, axis=1)
print(min_row)  
# [4 1 7]

7. mean

计算数组的平均值。

arr_1= np.array([1, 2, 3, 4, 5])# 整个数组的平均值
mean_val = np.mean(arr_1)
print(mean_val)  
# 3.0# 二维数组
arr_2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 每列的平均值
mean_col = np.mean(arr_2, axis=0)
print(mean_col)  
# [4. 5. 6.]# 每行的平均值
mean_row = np.mean(arr_2, axis=1)
print(mean_row)  
# [2. 5. 8.]

8. sum

计算数组元素的和。

arr_1 = np.array([1, 2, 3, 4, 5])# 整个数组的和
sum_val = np.sum(arr_1)
print(sum_val)  
# 15# 二维数组
arr_2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])# 每列的和
sum_col = np.sum(arr_2, axis=0)
print(sum_col)  
# [12 15 18]# 每行的和
sum_row = np.sum(arr_2, axis=1)
print(sum_row)  
# [ 6 15 24]# 所有元素的和
total_sum = np.sum(arr_2)
print(total_sum)  
# 45

9. 代码案例

import numpy as npprint("创建数组")
my_list = [1,2,3,4,5]
np_array = np.array(my_list)
print(f"从列表创建的数组{np_array}")
# 从列表创建的数组[1 2 3 4 5]zero_matrix = np.zeros((2,3))
print("2*3的全零矩阵:\n",zero_matrix)
"""2*3的全零矩阵:[[0. 0. 0.][0. 0. 0.]]
"""seq_array = np.arange(0,10,2)
print(f"序列数组:{seq_array}")
# 序列数组:[0 2 4 6 8]data = np.arange(10,20)
print(f"原始数据:{data}")
# 原始数据:[10 11 12 13 14 15 16 17 18 19]print(f"第一个元素:{data[0]}")
# 第一个元素:10print(f"最后3个元素:{data[-3:]}")
# 最后3个元素:[17 18 19]print(f"索引1到4的切片:{data[1:4]}")
# 索引1到4的切片:[11 12 13]print("向量化运算与广播机制")
a = np.array([10,20,30,40])
b = np.array([1,2,3,4])print(f"a+b={a+b}")
# a+b=[11 22 33 44]print(f"a*b={a*b}")
# a*b=[ 10  40  90 160]print(f"a+100={a+100}")
# a+100=[110 120 130 140]print(f"a*2={a*2}")
# a*2=[20 40 60 80]task_matrix = np.random.randint(1,101,size=(5,5))
print("随机矩阵:\n",task_matrix)"""
随机矩阵:[[ 1 87 25 41 96][13 65 64 32 72][42 64 34 37 83][68 83 79 21 85][16 95 85 16 29]]
"""max_val = task_matrix.max()
min_val = task_matrix.min()
row_mean = task_matrix.mean(axis = 1)
col_sum = task_matrix.sum(axis = 0)print(f"最大值:{max_val}") # 96
print(f"最小值:{min_val}") # 1
print(f"每行平均值:{row_mean}") # [50. 49.2  52. 67.2 48.2]
print(f"每列总和:{col_sum}") # [140 394 287 147 365]

这些 API 是 NumPy 中最基础也是最常用的功能,掌握了它们就能处理大多数数值计算任务。NumPy 的强大之处在于这些操作都是向量化的,能够高效地处理大规模数据。

http://www.dtcms.com/a/335804.html

相关文章:

  • MYSQL-175. 组合两个表
  • Java 学习笔记(基础篇4)
  • Java学习笔记:IDEA简单使用技巧
  • 安卓14系统应用收不到开机广播
  • HTTP请求参数类型及对应的后端注解
  • AMBA-AXI and ACE协议详解(七)
  • 【学习笔记】面向AI安全的26个缓解措施
  • API网关实施中典型陷阱
  • 【数据结构与算法】单调队列的定义和运用
  • 整体设计 之“凝聚式中心点”原型 --整除:智能合约和DBMS的深层联合 之1
  • Android Jetpack | Livedata
  • Gradle快速入门学习
  • 【算法】模拟专题
  • riscv中断处理软硬件流程总结
  • C++算法题目分享:二叉搜索树相关的习题
  • 原子指标、派生指标和复合指标
  • nodejs 中间件
  • 【Jenkins】01 - Jenkins安装
  • C语言网络编程TCP通信实战:客户端↔服务器双向键盘互动全流程解析
  • [GWCTF 2019]枯燥的抽奖
  • Java线程的6种状态和JVM状态打印
  • [TryHackMe]Brainpan1( 内存溢出)
  • PERCEIVER IO:一种用于结构化输入与输出的通用架构
  • 脉冲计数实现
  • 深入剖析ROS参数服务器通信机制 ——共享全局数据的“云端仓库”实现原理
  • Node.js安装教程
  • MySQL的事务日志:
  • java之 junit4单元测试Mockito的使用
  • 26. Object.defineProperty 和 Proxy 用法
  • 中级统计师-会计学基础知识-第五章 财务报告