【Python 零基础入门】Numpy 常用函数

news2025/7/19 21:04:28

【Python 零基础入门】内容补充 3 Numpy 常用函数

  • 概述
  • Numpy 数组创建
    • np.arange
    • np.linspace
  • 数组操作
    • reshape
    • flatten
    • concatenate
    • split
    • vstack
    • hstack
  • 数学运算
    • add 相加
    • subtract 相减
    • multiply 相乘
    • divide 相除
  • 通用函数
    • np.sqrt 平方根
    • np.log 对数
    • np.exp 指数
    • np.sin 正弦

概述

Numpy (Numerical Python) 是 Python 编程语言的一个扩展程序库, 支持大量的维度数组与矩阵运算, 并提供了大量的数学函数库. Numpy 利用了多线程数组来存储和处理大型数据集, 从而提供了一个高效的方式来进行数值计算, 特别是对于矩阵预算和线性代数.

Python Numpy 常用函数

Numpy 数组创建

Numpy 常用函数

np.arange

np.arange是一个非常实用的函数, 用于创建一系列的值, 类似于 Python 中的range内置函数, 但是返回的是一个数组.

格式:

import numpy as np

array = np.arange(start, stop, step)

参数:

  • start: 数组开始值 (含), 默认为 0
  • stop: 数组结束值 (不含)
  • step: 数组步长

例子:

# 0-9
array1 = np.arange(10)
print(array1)

# 1-10
array2 = np.arange(1, 11)
print(array2)

# 1-10 奇数
array3 = np.arange(1, 11, 2)
print(array3)

输出结果:

[0 1 2 3 4 5 6 7 8 9]
[ 1  2  3  4  5  6  7  8  9 10]
[1 3 5 7 9]

np.linspace

np.linspace可以帮助我们创建一个等差数列.

格式:

import numpy as np

array = np.linspace(start, stop, num, endpoint)

参数:

  • start: 数组起始值
  • stop: 数组结束值
  • num: 生成的眼本书, 默认为 50
  • endpoint: 布尔值, 如果为 True, 则 “stop” 是最后一个样本, 否则不包括 “stop”, 默认为 True

例子:

# 包括 50
array1 = np.linspace(0, 50)
print(array1)

# 不包括 50
array1 = np.linspace(0, 50, endpoint=False)
print(array1)

# 样本为 10
array1 = np.linspace(5, 50, 10)
print(array1)

输出结果:

[ 0.          1.02040816  2.04081633  3.06122449  4.08163265  5.10204082
  6.12244898  7.14285714  8.16326531  9.18367347 10.20408163 11.2244898
 12.24489796 13.26530612 14.28571429 15.30612245 16.32653061 17.34693878
 18.36734694 19.3877551  20.40816327 21.42857143 22.44897959 23.46938776
 24.48979592 25.51020408 26.53061224 27.55102041 28.57142857 29.59183673
 30.6122449  31.63265306 32.65306122 33.67346939 34.69387755 35.71428571
 36.73469388 37.75510204 38.7755102  39.79591837 40.81632653 41.83673469
 42.85714286 43.87755102 44.89795918 45.91836735 46.93877551 47.95918367
 48.97959184 50.        ]
[ 0.  1.  2.  3.  4.  5.  6.  7.  8.  9. 10. 11. 12. 13. 14. 15. 16. 17.
 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49.]
[ 5. 10. 15. 20. 25. 30. 35. 40. 45. 50.]

数组操作

Numpy 数组操作

reshape

reshape方法用于改变数组形状而不改变其数据.

格式:

import numpy as np

reshaped_array = reshape(a, newshape)

参数:

  • a: 原始数组
  • newshape: 新的形状

例子:

array = np.arange(6)
reshaped_arrary = array.reshape(2, 3)

# 调试输出
print("原始数组:", array, sep="\n")
print("改变形状后的数组:", reshaped_arrary, sep="\n")

array = np.array([[0, 1, 2], [3, 4, 5]])
reshaped_arrary = array.reshape(-1)

# 调试输出
print("原始数组:", array, sep="\n")
print("改变形状后的数组:", reshaped_arrary, sep="\n")

输出结果:

原始数组:
[0 1 2 3 4 5]
改变形状后的数组:
[[0 1 2]
 [3 4 5]]
原始数组:
[[0 1 2]
 [3 4 5]]
改变形状后的数组:
[0 1 2 3 4 5]

flatten

flatten()可以帮助我们将多维数组降为 1 维数组.

格式:

import numpy as np

flattend_array = array.flatten()

例子:

# 创建原始 ndarray
array = np.array([[0, 1, 2], [3, 4, 5], [7, 8, 9]])

# 降为 1 维
flattened_array = array.flatten()

# 调试输出
print("原始数组:", array, sep="\n")
print("降为 1 维的数组:", flattened_array, sep="\n")

输出结果:

原始数组:
[[0 1 2]
 [3 4 5]
 [7 8 9]]
降为 1 维的数组:
[0 1 2 3 4 5 7 8 9]

concatenate

concatenate可以帮助我们沿着指定轴连接相同形状的两个或多个数组.

格式:

import numpy as np

concatenated_array = np.concatenate((a1, a2, ...), axis=0, out=None)

格式:

  • a1, a2: 需要连接的数组
  • axis: 连接轴, 默认为 0, 即纵向拼接, 如果为 1 则横向拼接
  • out: 放置结果的可选参数, 默认为 None

例子:

# 创建原始数组
array1 = np.array([[1, 2], [3, 4]])
array2 = np.array([[5, 6], [7, 8]])

# 纵向拼接
v_concatenated_array = np.concatenate((array1, array2))

# 横向拼接
h_concatenated_array = np.concatenate((array1, array2))

# 调试输出
print("纵向拼接:", v_concatenated_array, sep="\n")
print("横向拼接:", h_concatenated_array, sep="\n")

输出结果:

array 1:
[[1 2]
 [3 4]]
array 2:
[[5 6]
 [7 8]]
纵向拼接:
[[1 2]
 [3 4]
 [5 6]
 [7 8]]
横向拼接:
[[1 2]
 [3 4]
 [5 6]
 [7 8]]

split

split函数可以帮助我们将一个数组分割为多个子数组.

格式:

import numpy as np

splitted_arrays = np.split(array, indices_or_sections, axis=0)

参数:

  • a: 带分割的数组
  • indices_or_sections: 如果是一个整数, 就将该数平均切分, 如果是数组, 为沿轴切分的位置 (左开有闭)
  • axis: 沿着哪个维度进行切分, 默认为 0

例子:

# 创建原始数组
array = np.arange(9)

# 分割数组为 3 等分
splitted_arrays = np.split(array, 3)

# 调试暑促
print("原始数组:", array)
print("分割后的数组:", splitted_arrays)

# 创建原始数组
array = np.arange(9)

# 以索引 2, 5 分割数组
splitted_arrays = np.split(array, [2, 5])

# 调试暑促
print("原始数组:", array)
print("分割后的数组:", splitted_arrays)

# 创建原始数组
array = np.arange(9).reshape(3, 3)

# 横向 3 等分
splitted_arrays = np.split(array, 3, axis=1)

# 调试暑促
print("原始数组:", array, sep="\n")
print("分割后的数组:", splitted_arrays, sep="\n")

输出结果:

原始数组: [0 1 2 3 4 5 6 7 8]
分割后的数组: [array([0, 1, 2]), array([3, 4, 5]), array([6, 7, 8])]
原始数组: [0 1 2 3 4 5 6 7 8]
分割后的数组: [array([0, 1]), array([2, 3, 4]), array([5, 6, 7, 8])]
原始数组:
[[0 1 2]
 [3 4 5]
 [6 7 8]]
分割后的数组:
[array([[0],
       [3],
       [6]]), array([[1],
       [4],
       [7]]), array([[2],
       [5],
       [8]])]

vstack

vstack可以帮助我们将数组进行垂直堆叠.

格式:

import numpy as np

stacked_array = np.vstack((a1, a2, ...))

参数:

  • a1, a2: 需要迭代的数组
  • 返回: 纵向堆叠的数组

例子:

# 原始数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])

# 纵向堆叠
stacked_array = np.vstack((array1, array2))

# 输出结果
print("array1:", array1)
print("array2:", array2)
print("纵向堆叠数组:", stacked_array, sep="\n")

输出结果:

array1: [1 2 3]
array2: [4 5 6]
纵向堆叠数组:
[[1 2 3]
 [4 5 6]]

hstack

hstack可以帮我们将数组进行水平堆叠.

格式:

import numpy as np

stacked_array = np.hstack((a1, a2, ...))

参数:

  • a1, a2: 需要迭代的数组
  • 返回: 横向堆叠的数组

例子:

# 原始数组
array1 = np.array([1, 2, 3])
array2 = np.array([4, 5, 6])
array3 = np.array([7, 8, 9])

# 横向堆叠
stacked_array = np.hstack((array1, array2, array3))

# 输出结果
print("array1:", array1)
print("array2:", array2)
print("array3:", array3)
print("横向堆叠数组:", stacked_array, sep="\n")

输出结果:

array1: [1 2 3]
array2: [4 5 6]
array3: [7 8 9]
横向堆叠数组:
[1 2 3 4 5 6 7 8 9]

数学运算

add 相加

相加

例子:

# 原始数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 相加
add_result = np.add(a, b)

# 调试输出
print("数组 a:", a)
print("数组 b:", b)
print("相加结果:", add_result)

subtract 相减

相减

例子:

# 原始数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 相减
subtract_result = np.subtract(a, b)

# 调试输出
print("数组 a:", a)
print("数组 b:", b)
print("相减结果:", subtract_result)

输出结果:

数组 a: [1 2 3]
数组 b: [4 5 6]
相减结果: [-3 -3 -3]

multiply 相乘

相乘

例子:

# 原始数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 相乘
multiply_result = np.multiply(a, b)

# 调试输出
print("数组 a:", a)
print("数组 b:", b)
print("相乘结果:", multiply_result)

输出结果:

数组 a: [1 2 3]
数组 b: [4 5 6]
相乘结果: [ 4 10 18]

divide 相除

相除

例子:

# 原始数组
a = np.array([1, 2, 3])
b = np.array([4, 5, 6])

# 相除
divide_result = np.divide(a, b)

# 调试输出
print("数组 a:", a)
print("数组 b:", b)
print("相除结果:", divide_result

输出结果:

数组 a: [1 2 3]
数组 b: [4 5 6]
相除结果: [0.25 0.4  0.5 ]

通用函数

通用函数 (Ufuncs) 是 numpy 的核心部分. 通用函数提供了快速的元素级运算. 这些函数都是在 C 语言级别编写的, 因此能提供 Python 所不具备的高性能. 通用函数的另一个又是是能够直接读取数据, 避免了在 Python 循环中处理数据的开销.

np.sqrt 平方根

例子:

# 原始数组
array = np.array([1, 2, 3])

# 平方根
sqrt_array = np.sqrt(array)

# 调试输出
print("原始数组:", array)
print("平方根数组:", sqrt_array)

输出结果:

原始数组: [1 2 3]
平方根数组: [1.         1.41421356 1.73205081]

np.log 对数

np.log对数组中每个元素计算自然对数 l o g e ( X ) log_e(X) loge(X)

例子:

# 原始数组
array = np.array([1, 2, np.e])

# 对数
log_array = np.log(array)

# 调试输出
print("原始数组:", array)
print("对数数组:", log_array)

输出结果:

原始数组: [1.         2.         2.71828183]
对数数组: [0.         0.69314718 1.        ]

np.exp 指数

np.exp对数组中每个元素计算自然指数 e x e^x ex

例子:

# 原始数组
array = np.array([1, 2, 3])

# 平方根
exp_array = np.exp(array)

# 调试输出
print("原始数组:", array)
print("指数数组:", exp_array)

输出结果:

原始数组: [1 2 3]
指数数组: [ 2.71828183  7.3890561  20.08553692]

np.sin 正弦

例子:

# 原始数组
array = np.array([1, 2, 3])

# 正弦 sin
sin_array = np.sin(array)

# 调试输出
print("原始数组:", array)
print("正弦数组:", sin_array)

输出结果:

原始数组: [1 2 3]
正弦数组: [0.84147098 0.90929743 0.1411200

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1157456.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WPS文件恢复怎么做?记得掌握这5个方法!

“我保存在WPS里的部分文件丢失了,大家快帮我想想办法吧,有什么方法可以恢复这些WPS里的文件吗?真的很重要!” WPS Office是一款流行的办公套件,给用户在办公和学习方面提供了很多的便利。但在整理文件时,我…

CV计算机视觉每日开源代码Paper with code速览-2023.10.30

精华置顶 墙裂推荐!小白如何1个月系统学习CV核心知识:链接 点击CV计算机视觉,关注更多CV干货 论文已打包,点击进入—>下载界面 点击加入—>CV计算机视觉交流群 1.【语义分割】(NeurIPS2023)SmooSe…

pc通过window.open打开新页面,新页面要使用原来页面的token

原文链接: https://blog.csdn.net/weixin_42342065/article/details/127420783 (以下为本人笔记使用) 对于前端来说,一般在登录获取token之后会把token存入缓存以及放置在Request Headers请求头中,但是使用iframe/window.open/a这三种标签打…

高并发项目部署以及优化手段

文章目录 🔊博主介绍🤖博主的简介📥博主的目标 🥤本文内容🌟 服务器配置🍊 文件系统参数、TCP网络层参数等系统参数🍊 修改文件描述符大小 🌟 SpringBoot的配置🍊 1. 配置…

WPS Office 制作下拉两级联动

文章目录 前言WPS Office 制作下拉两级联动1. 准备两级联动数据![在这里插入图片描述](https://img-blog.csdnimg.cn/dc8c21c5f12349aeb467eed266888618.png)2. 设置一级下拉3. 设置二级联动下拉 前言 如果您觉得有用的话,记得给博主点个赞,评论&#xf…

k8s资源对象--pod

创建pod: kubectl get pod cp test_pod_1.yaml nginx_pod.yaml cah 查看详细信息: pod的状态处于pending可能的原因:一个或多个没有运行 由于当前所有节点没有可用节点(所有节点资源不足,所有节点) 查看所有&…

全网最详细4W字Flink全面解析与实践(下)

本文已收录至GitHub,推荐阅读 👉 Java随想录 微信公众号:Java随想录 原创不易,注重版权。转载请注明原作者和原文链接 文章目录 Flink State状态CheckPoint & SavePointCheckPoint原理SavePoint原理 StateBackend状态后端Memo…

LiveGBS流媒体平台GB/T28181常见问题-国标级联海康国标级联大华国标级联华为等,配置了国标级联, 上级看不到通道该怎么办?

LiveGBS常见问题-国标级联海康国标级联大华国标级联华为等,配置了国标级联, 上级看不到通道该怎么办? 1、如何配置国标级联2、上级看不到通道排查2.1、是否共享通道2.3、通道编号是否满足上级要求 3、如何抓包分析4、搭建GB28181视频直播平台 1、如何配置国标级联 …

ASO优化之如何制作Google Play的长短描述

应用的描述以及标题和图标是元数据中最关键的元素,可以影响用户是否决定下载我们的应用程序。简短描述的长度限制为80个字符,它提供了更多的有关应用背景信息的机会。 1、简短描述帮助用户快速了解我们应用。 确保内容丰富的同时,保持简洁和…

Expected indentation of 16 spaces but found 8 spaces.eslintvue/script-indent

问题:Expected indentation of 16 spaces but found 8 spaces.eslintvue/script-indent 原因: 严格地检查缩进问题,并不是报错 解决: 方法一:我们可以关闭这个检查规则(好像没用) .eslintrc.js…

02-详细介绍Vue中的数据代理和数据响应式

数据代理 MVVM 原生的Javascript代码Model和View没有分离,如果数据发生任意的改动, 接下来我们需要编写大篇幅的JS代码操作DOM元素更新视图 MVVM是目前前端开发领域当中倡导Model和View进行分离的开发思想或者架构模式,大部分主流框架如Vue和React都借鉴了这个MVVM思想 Mod…

介绍几款Linux 下终极SSH客户端

安全外壳协议(Secure Shell,简称 SSH)是一种网络连接协议,允许您通过网络远程控制计算机。特别是在Linux命令行模式下,使用SSH,可以很方便管理linux上的运维工作。以下是一些最受欢迎的Linux SSH客户端&…

mathematica解非齐次常微分方程通用写法。解RC微分方程,输入硬写为Cos,通用写法:将微分方程的解函数表达式转为mathematica的纯函数

输入电压为余弦信号, mathematica解微分方程举例(mathematica解非齐次常微分方程通用写法)

苹果相册回收站在哪里?删除的照片如何恢复?(已解决)

苹果手机的相册回收站是一个非常重要的功能,可以帮我们把一些不小心删除的重要照片给恢复回来。这个功能对于一些比较粗心的小伙伴来说简直是救星! 但是,还有许多第一次使用苹果手机的朋友不知道相册回收站在哪里。苹果相册回收站在哪里&…

东莞理工学院第四届“火焰杯”软件测试高校就业选拔赛颁奖典礼

10月10日下午,由软件测试就业联盟主办的第四届“火焰杯”软件测试高校就业选拔赛颁奖典礼在9A206举行。本次比赛邀请了测吧(北京)科技有限公司项目总监王雪冬、计算机科学与技术学院副院长刘文果和计算机科学与技术学院软件工程系主任张福勇为…

10 _ 递归:如何用三行代码找到“最终推荐人”?

推荐注册返佣金的这个功能我想你应该不陌生吧?现在很多App都有这个功能。这个功能中,用户A推荐用户B来注册,用户B又推荐了用户C来注册。我们可以说,用户C的“最终推荐人”为用户A,用户B的“最终推荐人”也为用户A,而用户A没有“最终推荐人”。 一般来说,我们会通过数据…

GSA、GSEA、ssGSEA、GSVA的算法原理及它们的联系与区别

一、 简述 为了从基因的表达水平中得到更加具体直观的生物学功能变化的信息,多种基于已知的基因集的分析方法应运而生。其中,基因集分析(Gene Set Analysis)、基因集富集分析(Gene Set Enrichment Analysis&#xff09…

上网行为审计软件丨上网行为审计解决方案

很多人一听到上网行为审计就会心有余悸,认为是公司侵犯员工隐私的一种不良的方式,但是对于上网行为审计软件,我们要辩证的看待。 上网行为审计确实有一定的好处: 1、监控网络行为,防止不当行为: 上网行为…

jdk官网下载(详细步骤)

jdk全部版本下载网址 Java Archive | Oraclehttps://www.oracle.com/java/technologies/downloads/archive/ 下载之前先建立oracle账号(免费创建),不用特意去搜,你点击下载jdk的时候会自动弹出来,自己建立一个账号就能下载了 找到自己要下载…

【论文笔记】Unifying Large Language Models and Knowledge Graphs:A Roadmap

(后续更新完善) 2. KG-ENHANCED LLMS 2.1 KG-enhanced LLM Pre-training 以往将KGs集成到大型语言模型的工作主要分为三个部分:1)将KGs集成到训练目标中,2)将KGs集成到LLM输入中,3)将KGs集成到附加的融合模块中。 2.1.1 Integr…