这8个NumPy函数可以解决90%的常见问题

news2024/11/26 6:02:29

NumPy是一个用于科学计算和数据分析的Python库,也是机器学习的支柱。可以说NumPy奠定了Python在机器学习中的地位。NumPy提供了一个强大的多维数组对象,以及广泛的数学函数,可以对大型数据集进行有效的操作。这里的“大”是指数百万行。

Numpy快速而高效的原因是底层的C代码,这比使用Python进行数组的操作要快上几百倍,并且随着数据量级的上升而上升。

本文中整理了一些可以解决常见问题的主要的NumPy函数。

1、创建数组

numpy.array:创建新的NumPy数组

  # Create an array using np.array()
 arr = np.array([1, 2, 3, 4, 5])
 
 print(arr)
 Ouput: [1 2 3 4 5]

numpy.zeros:创建一个以零填充的数组。

 # Create a 2-dimensional array of zeros
 arr = np.zeros((3, 4))
 
 [[0. 0. 0. 0.]
  [0. 0. 0. 0.]
  [0. 0. 0. 0.]]

类似的还有numpy.ones:创建一个都是1的数组 / numpy.empty:在不初始化数组元素的情况下创建数组。

使用numpy.random:生成随机数组的函数。

 # Generate a random integer between 0 and 9
 rand_int = np.random.randint(10)
 print(rand_int)

numpy.linspace:在指定范围内生成均匀间隔的数字。

 # Generate an array of 5 values from 0 to 10 (inclusive)
 arr = np.linspace(0, 10, 5)
 
 # Print the array
 print(arr)
 [ 0.   2.5  5.   7.5 10. ]

numpy.range:用间隔的值创建数组。

 # Generate an array from 0 to 10 (exclusive) with step size 1
 arr = np.arange(0, 10, 2)
 
 # Print the array
 print(arr)
 [1 3 5 7 9]

2、查看数组信息

numpy.shape:返回一个表示数组形状的元组。

numpy.ndim:返回数组的维度数。

numpy.dtype:获取数组中元素的数据类型。可以是int型,float型,bool型等等。

3、数组操作函数

numpy.reshape:改变数组的形状。

 # Create a 1-dimensional array
 arr = np.array([1, 2, 3, 4, 5, 6])
 
 # Reshape the array to a 2x3 matrix
 reshaped_arr = np.reshape(arr, (2, 3))
 
 [[1 2 3]
  [4 5 6]]

numpy.transpose:用于排列数组的维度。它返回一个轴调换后的新数组。

 # Create a 2-dimensional array
 arr = np.array([[1, 2, 3],
                 [4, 5, 6]])
 
 # Transpose the array
 transposed_arr = np.transpose(arr)
 [[1 4]
  [2 5]
  [3 6]]

numpy.concatate:沿现有轴连接数组。

 # Create two 1-dimensional arrays
 arr1 = np.array([1, 2, 3])
 arr2 = np.array([4, 5, 6])
 
 # Concatenate the arrays along axis 0 (default)
 concatenated_arr = np.concatenate((arr1, arr2))
 [1 2 3 4 5 6]

numpy.split:分割数据,numpy.resize:改变数组的形状和大小。

numpy.vstack:将多个数组垂直堆叠以创建一个新数组。

 # Create two 1-dimensional arrays
 arr1 = np.array([1, 2, 3])
 arr2 = np.array([4, 5, 6])
 
 # Vertically stack the arrays
 stacked_arr = np.vstack((arr1, arr2))
 [[1 2 3]
  [4 5 6]]

numpy.hstack:与vstack类似,但是是水平堆叠数组。

4、数学函数

numpy.sum:计算数组元素的和。

numpy.mean:计算数组的算术平均值。

numpy.max:返回数组中的最大值。

numpy.min:返回数组中的最小值。

numpy.abs:计算元素的绝对值。

numpy.exp:计算所有元素的指数。

numpy.subtract: 对两个数组的对应元素进行减法运算。

numpy.multiply: 对两个数组的对应元素进行乘法运算。

numpy.divide: 对两个数组的对应元素进行除法运算。

numpy.sin: 计算数组中每个元素的正弦值。

numpy.cos: 计算数组中每个元素的余弦值。

numpy.log: 计算数组中每个元素的自然对数(以e为底的对数)。

5、统计函数

numpy.std:计算数组的标准差。

 # Create a 1-dimensional array
 arr = np.array([1, 2, 3, 4, 5])
 
 # Compute the standard deviation of the array
 std = np.std(arr)
 1.4142135623730951

numpy.var:计算数组的方差。

numpy.histogram:计算一组数据的直方图。

numpy.percentile:计算数组的第n个百分位数。它返回低于给定百分比的数据的值。

 data = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
 
 # Calculate the 50th percentile (median) of the data
 median = np.percentile(data, 50)
 
 # Calculate the 25th and 75th percentiles (quartiles) of the data
 q1 = np.percentile(data, 25)
 q3 = np.percentile(data, 75)
 
 Median: 5.5
 Q1: 3.25
 Q3: 7.75

numpy.corcoef:计算两个数组之间的相关系数。numpy.mean: 计算数组元素的平均值。numpy.median: 计算数组元素的中位数。

numpy.random.rand:在区间[0,1]内从均匀分布生成随机数数组

 # Generate a 1-dimensional array of random numbers
 random_array = np.random.rand(5)
 [0.35463311 0.67659889 0.5865293  0.77127035 0.13949178]

numpy.random.normal:从正态(高斯)分布生成随机数

 # Generate a random number from a normal distribution
 random_number = np.random.normal()
 -0.6532785285205665

6、线性代数函数

numpy.dot:计算两个数组的点积。

 # Create two arrays
 a = np.array([1, 2, 3])
 b = np.array([4, 5, 6])
 
 # Compute the dot product of the arrays
 dot_product = np.dot(a, b)
 
 32

numpy.linalg.inv:计算一个方阵的逆, numpy.linalg.eig:一个方阵的特征值和特征向量。numpy.linalg.solve:求解一个线性方程组。

7、排序函数

numpy.sort:沿指定轴返回数组的排序副本

 # Create a 2D array
 arr = np.array([[3, 1, 5], [2, 4, 6]])
 
 # Sort the array along the second axis (columns)
 sorted_arr = np.sort(arr, axis=1)
 
 [[1 3 5]
  [2 4 6]]

numpy.argsort:返回按升序对数组排序的索引

 # Create an array
 arr = np.array([3, 1, 5, 2, 4])
 
 # Get the indices that would sort the array
 sorted_indices = np.argsort(arr)
 
 [1 3 0 4 2]

8、其他一些高级的函数

numpy.unique:在数组中查找唯一的元素。

 arr = np.array([2, 1, 3, 2, 1, 4, 5, 4])
 
 # Get the unique elements of the array
 unique_values = np.unique(arr)
 [1 2 3 4 5]

numpy.fft:傅里叶变换的函数。

numpy.ma:供对掩码数组的支持。

  • numpy.ma.array:从现有的数组或序列创建一个掩码数组。
  • numpy.ma.masked_array:从现有数组和掩码中创建一个掩码数组。
  • numpy.ma.mask:表示掩码数组中的掩码值。
  • numpy.ma.masked_invalid:屏蔽数组中无效的(NaN, Inf)元素。
  • numpy.ma.masked_greate, numpy.ma.masked_less:掩码大于或小于给定值的元素。
 arr = np.array([1, 2, 3, np.nan, 5])
 
 # Create a masked array by masking the invalid values
 masked_arr = ma.masked_invalid(arr)
 [1 2 3 5]

numpy.apply_along_axis:沿着数组的特定轴应用函数。

numpy.wheres:一个条件函数,根据给定条件返回数组中满足条件的元素的索引或值。

 condition = np.array([True, False, True, False])
 
 # Create two arrays
 array_true = np.array([1, 2, 3, 4])
 array_false = np.array([5, 6, 7, 8])
 
 result = np.where(condition, array_true, array_false)
 
 [1 6 3 8]

以上就是Numpy最经常被使用的函数,希望对你有所帮助。

https://avoid.overfit.cn/post/3409c6e694a44e9cb9b9e6be7930801c

作者:alimejor

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

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

相关文章

MGR网络抖动问题分析和group_replication_unreachable_majority_timeout等参数分析

导言 本文主要从测试的角度来阐明group_replication_unreachable_majority_timeout和group_replication_member_expel_timeout参数对集群网络分区的影响,首先这里放一张大图,为多年前学习MGR的时候留下的,也就是这两个参数对集群的影响&…

穷途末路的阿里中台

观点| Mr.K 主笔| Wendy.L 来源| 技术领导力(ID:jishulingdaoli) 对于关注K哥公众号多年的朋友来说,“中台”早就是老生常谈的东西了,如果你还不知道它是什么,可以看看之前的中台文章先恶补一下。 关于中台,这些年翻…

chatgpt赋能python:Python倒序range的完整指南

Python倒序range的完整指南 Python是一种高级编程语言,很多人认为它非常容易学习和使用。其中一个非常有用的功能是range()函数,可以生成数字序列。然而,有时候我们需要以相反的顺序生成这个数字序列,这时候倒序range()函数就派上…

5G NTN技术概述及演进分析(下)

5G NTN因其广泛的服务覆盖能力、应对物理攻击或自然灾害的健壮性和灵活性,在交通、公共安全、电子健康、农业、金融、汽⻋等领域有广泛的应用前景。5G NTN与地面通信的差异主要体现在高时延、广覆盖和卫星的运动等方面,这使得其在传输时延、多普勒频移、…

Ae:蒙版跟踪(含脸部跟踪)

蒙版跟踪,就是通过记录画面上蒙版区域的变化,生成蒙版路径 Mask Path的关键帧。 常用于完成合成中的遮挡关系,或者局部添加动态效果,以及实现人物的脸部特效。 蒙版跟踪 要使用蒙版跟踪器,需要先创建并选中蒙版&#x…

设计模式之~备忘录模式

备忘录(Memento): 备忘录模式(Memento Pattern)又称之为快照模式(Snapshop Pattern)或者令牌模式(Token Pattern)。 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态…

【数据库优化-count()】count()统计行数

目录 1 count(*)为什么性能差? 2 优化count(*)性能 2.1 增加redis缓存 2.2 多线程执行 2.3 减少join的表 3 count的各种用法性能对比 数据库:Mysql8、存储引擎是Innodb。 通常情况下,分页接口一般会查询两次数据库,第一次是…

软考A计划-试题模拟含答案解析-卷十七

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

用ChatGPT写一个数据采集程序

入门教程、案例源码、学习资料、读者群 请访问:python666.cn 大家好,欢迎来到 Crossin的编程教室 ! 上次我们讨论了ChatGPT在辅助编程学习上的一些用法: 如何用ChatGPT学Python 既然ChatGPT可以理解并生成代码,那么自然…

多线程 —— 线程控制

目录 线程控制1 线程创建2 线程等待3 线程终止4 线程分离 pthread_t id && LWP 线程控制 1 线程创建 功能:创建一个新的线程 原型 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void*), void *arg); 参数…

chatgpt赋能python:Python中任取一个数

Python中任取一个数 如果你是一名Python编程爱好者或者是从事相关行业的工程师,你可能会知道Python强大的数学计算能力。Python中自带了诸多数学函数和库,例如NumPy、SciPy、pandas等等,可以帮助我们轻松地完成各种计算任务,包括…

MySQL—存储引擎(上)

♥️作者:小刘在C站 ♥️个人主页:小刘主页 ♥️每天分享云计算网络运维课堂笔记,努力不一定有回报,但一定会有收获加油!一起努力,共赴美好人生! ♥️树高千尺,落叶归根人生不易&…

Ae 脚本:Face Tools 4 脸部工具

Motion Bro 的 AE Face Tools 扩展脚本工具,包含几百种预设,如换脸、换妆、美颜、液化、失真扭曲、面部修饰、蒙板工具、文字跟踪、添加元素、人脸锁定防抖稳定以及遮挡等预设效果,大大扩展了 After Effects 中的人脸跟踪功能。 AE Face Tool…

基于激光雷达和单目视觉融合的SLAM和三维语义重建

文章:SLAM and 3D Semantic Reconstruction Based on the Fusion of Lidar and Monocular Vision 作者:Lu Lou, Yitian Li, Qi Zhang and Hanbing Wei 编辑:点云PCL 欢迎各位加入知识星球,获取PDF论文,欢迎转发朋友圈。…

领导说培养我,怎么看出来他是真培养,还是PUA我?

当你的领导说要培养你的时候,如何分辨他的真实意图? 一位网友问: 领导说培养我,怎么看出来他是真培养,还是PUA? 来看看这位网友的支招: 如果领导做到以下几点,那就是真的培养你。 1.…

实战记录01(QT连接MySQL显示未加载问题解决)

进入实战 学了这么几天就要开发新项目了,所以可能不会每日记录吧,遇到问题可能就发一下, 昨天是又重新写了一个登录和管理界面,写完之后就可以开始链接数据库了。 QT连接MYSQL报错 我一开始是在.pro文件中加上了 QTsql QTmysq…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(5月31日论文合集)

文章目录 一、检测相关(10篇)1.1 Table Detection for Visually Rich Document Images1.2 DENTEX: An Abnormal Tooth Detection with Dental Enumeration and Diagnosis Benchmark for Panoramic X-rays1.3 TrueDeep: A systematic approach of crack detection with less dat…

C++ STL源码下载及目录结构

掌握一定的c基础,想更深入的了解STL源码实现的读者,可以参照本文下载源码阅读 1、源码下载 ​ SGI STL版本(侯捷老师推荐):https://github.com/dongyusheng/csdn-code/tree/master/STLgcc STL:GitHub - gc…

使用 Docker 部署 Jenkins 代理(主从)控制服务器

自动化是 DevOps 的核心。各种自动化工具和技术真正实现了持续集成和持续交付的概念。这些工具多年来发展迅速,但似乎永远存在的一个名字是Jenkins。 我们不会在这篇文章中讨论 CI-CD 的介绍性概念,也不会浪费时间展示 Jenkins 安装步骤。如果您是 Jenk…

Go1.21 速览:骚操作 panic(nil) 将成为历史!以后别这么干了。。。

大家好,我是煎鱼。 在 Go 语言中,返回错误、抛出异常一直是大家比较关注的话题。在抛出异常上,我们一般都是这么用的: func mayPanic() {panic("脑子进煎鱼了") }func main() {defer func() {if r : recover(); r ! nil…