NumPy通用函数、利用NumPy数组进行数据处理

2023-11-16

一、NumPy通用函数

1、什么是通用函数

通用函数(ufunc)是一种针对ndarray中的数据执行元素级运算的函数。

注意:函数返回的是一个新的数组

通用函数中接收一个数组参数的函数称为一元通用函数。
那么同理,接受两个数组参数的称为二元通用函数。

2、常见的一元通用函数如下:

(这是一元函数,而且大部分是比较好理解的函数,就不再多写例子了)

函数 描述
abs 计算整数、浮点数或复数的绝对值
sqrt 计算各元素的平方根
square 计算各元素的平方
exp 计算各元素的指数ex
log、log10、log2、log1p 分别对自然对数(底数为e)、底数为10的log、底数为2的log、log(1+x)
sign 计算元素的正负号:1(正数)、0(零)、-1(负数)
ceil 计算个元素的ceiling值,及大于或者等于改制的最小整数
floor 计算元素的floor值,及小于等于该值的最大整数
rint 将各元素四舍五入到最接近的整数
modf 将数组的小数和整数部分以两个独立数组的形式返回
isnan 返回一个表示“哪些值是NaN”的布尔型数组
isfinite、isinf 分别返回表示“哪些元素是有穷的”或“哪些元素是无穷的”的布尔型数组
sin、sinh、cos、cosh、tan、tanh 普通型和双曲型三角函数
arcos、arccosh、arcsin 反三角函数

这里我们只拿两个比较有意思的来演示一下(地板,天花板函数):

import numpy as np
ret = np.array([1.57])
print(np.ceil(ret))#结果为[2.]
print(np.floor(ret))#结果为[1.]

3、常见的二元通用函数如下表:

函数 描述
add 将数组中对应的元素相加
subtract 从第一个数组中减去第二个数组中的元素
multiply 数组元素相乘
divide,floor_divide 除法或向下整除法(舍去余数)
maximum、fmax 元素级的最大值计算
minimum、fmin 元素级的最小值计算
mod 元素级的求模计算
copysign 将第二个数组中的值的符号赋值给第一个数组中的值
greater、greater_equal、less、less_equal、equal、not_equal、logical_and、logical_or、logical_xor 执行元素级的比较运算,最终产生布尔型数组,相当于运算符>、≥、<、≤、==、!=

二、利用NumPy数组进行数据处理

1、将条件逻辑转为数组运算

NumPy的where()函数是三元表达式 x if condition else y的矢量化版本。

import numpy as np
arr_x = np.array([1, 5, 7])
arr_y = np.array([2, 6, 8])
arr_con = np.array([True, False, True])
result = np.where(arr_con, arr_x, arr_y)
print(result)
result2 = np.where(arr_x > 3, 1, 0)#赋值操作
print(result2)

2、数组统计运算

Numpy数组中与统计运算相关的方法

函数 描述
sum 对数组中全部或某个轴向的元素求和
mean 算术平均值
min 计算数组中的最小值
max 计算数组中的最大值
argmin 表示最小索引值
argmax 表示最大索引值
cumsum 所有元素的累计和
cumprod 所有元素的累计积
1.通过NumPy库中的相关方法,我们可以很方便地运用Python进行数组的统计汇总
import numpy as np
arr_x = np.array([1, 4, 5])
print(np.sum(arr_x))
print(np.mean(arr_x))
print(np.argmax(arr_x))
print(np.cumsum(arr_x))
import numpy as np
arr = np.arange(10)
arr = arr.reshape((2, 5))
print(arr)
print(arr.sum(axis=0))
print(arr.sum(axis=1))
#以上所有统计相关的函数,都可以指定轴

2.sun()

sum(a)默认为对输入参数中的所有元素进行求和

import numpy as np
arr = np.array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11])
print(arr)
print(np.sum(arr))
b = np.arange(12).reshape(2, 6)
print(b)
print(np.sum(b))

sum()输入参数带有axis时,将按照指定axis进行对应求和

import numpy as np
b = np.arange(12).reshape(2, 6)
print(b)
print(np.sum(b))
print(np.sum(b, axis=0))
print(np.sum(b, axis=1))

sum()输入参数axis为多个轴时,则依次按要求在axis上进行多次求和

```python
import numpy as np
a = np.arange(12).reshape(2, 2, 3)
print(a)
print(np.sum(a, axis=(0, 1)))
print(np.sum(a, axis=(1, 2)))
print(np.sum(a, axis=(0, 1, 2)))

3.cumsum()

一维,就是当前列之前的和加到当前列上

import numpy as np
a = np.array([1, 2, 3, 4, 5, 6, 7])
print(np.cumsum(a))

二维,axis=0(第一行不动,将第一行累加到其他行);axis=1(进入最内层,转化成列处理。第一列不动,将第一列累加到其他列)

import numpy as np
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(np.cumsum(a, axis=0))
print(np.cumsum(a, axis=1))

三维,axis=0(第一行不动,将第一行累加到其他行);axis=1(进入第二层,每个第二层第一行不动,累加到其他行);axis=2(进入最内层,转化成列处理,第一列不动,将其累加到其他列)

import numpy as np
a = np.array([[[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 20, 30]]])
print(np.cumsum(a, axis=0))

print(np.cumsum(a, axis=1))
print(np.cumsum(a, axis=2))

3、数组排序(sort()方法没有返回值)

1.如果希望对NumPy数组中的元素进行排序,可以通过sort()方法实现(默认通过最后一个轴排序)

import numpy as np
arr = np.array([[6, 2, 7], [3, 6, 2], [4, 3, 2]])
q = np.sort(arr)#此时axis=1或-1都是指最后一个轴(二维)
print(q)

2.如果希望对任何一个轴上的元素进行排序,则需要将轴的编号作为sort()方法的参数传入

import numpy as np
arr = np.array([[6, 2, 7], [3, 6, 2], [4, 3, 2]])
q = np.sort(arr, 0)
print(q)

4、检索数组元素

1.all()函数用于判断整个数组中的元素的值是否全部满足条件,如果满足条件返回True,否则返回False

import numpy as np
arr = np.array([[1, -2, -7], [-3, 6, 2], [-4, 3, 2]])
q = np.all(arr>0)#arr的所有元素是否都大于0
print(q)#输出结果为False

2.any()函数用于判断整个数组中的元素至少有一个满足条件就返回True,否则就返回False

import numpy as np
arr = np.array([[1, -2, -7], [-3, 6, 2], [-4, 3, 2]])
q = np.any(arr>0)#arr的所有元素是否有一个大于0
print(q)#输出结果为True

5、唯一化及其他集合逻辑

1.针对一维数组,NumPy提供了unique()函数来找出数组中的唯一值,并返回排序后的结果

import numpy as np
arr = np.array([12, 11, 34, 23, 12, 8, 11])
print(np.unique(arr))

2.in1d()函数用于判断数组中的元素是否在另一个数组中存在,该函数返回的是一个布尔型的数组

import numpy as np
arr = np.array([12, 11, 34, 23, 12, 8, 11])
print(np.in1d(arr, [11, 12]))

3.NumPy提供的有关集合的函数还有很多,常见的函数如下表所示:

函数 描述
unique(x) 计算x中的唯一元素,并返回有序结果
intersect1d(x,y) 计算x中的公共元素,并返回有序结果
union1d(x,y) 计算x中的并集,并返回有序结果
in1d(x,y) 得到一个表示“x”的元素是否包含“y”的布尔型数组
setdiff1d(x,y) 集合的差,即元素在x中且不在y中
setxor1d(x,y) 集合的对称差,及存在于一个数组中但不同时存在于两个数组中的元素
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NumPy通用函数、利用NumPy数组进行数据处理 的相关文章

  • Spark 请求最大计数

    我是 Spark 的初学者 我尝试请求允许我检索最常访问的网页 我的要求如下 mostPopularWebPageDF logDF groupBy webPage agg functions count webPage alias cntW
  • 围绕 readline 构建的 python 批处理的触发器选项卡完成

    背景 我有一个 python 程序 它导入并使用 readline 模块来构建自制的命令行界面 我有第二个 python 程序 围绕 Bottle 一个 Web 微框架构建 充当该 CLI 的前端 第二个 python 程序向第一个程序打开
  • 从数据框中按索引删除行

    我有一个数组wrong indexes train其中包含我想从数据框中删除的索引列表 0 63 151 469 1008 要删除这些索引 我正在尝试这样做 df train drop wrong indexes train 但是 代码失败
  • 如何在 AWS CDK 创建的 Python Lambda 函数中安装外部模块?

    我在 Cloud9 中使用 Python AWS CDK 并且我部署简单的 Lambda 函数那应该是发送 API 请求到 Atlassian 的 API当对象上传到 S3 存储桶时 也是由 CDK 创建的 这是我的 CDK 堆栈代码 fr
  • 使用 python 进行串行数据记录

    Intro 我需要编写一个小程序来实时读取串行数据并将其写入文本文件 我在读取数据方面取得了一些进展 但尚未成功地将这些信息存储在新文件中 这是我的代码 from future import print function import se
  • 如何在序列化器创建方法中获取 URL Id?

    我有以下网址 url r member P
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 在Python中调整图像大小

    我有一张尺寸为 288 352 的图像 我想将其大小调整为 160 240 我尝试了以下代码 im imread abc png img im resize 160 240 Image ANTIALIAS 但它给出了一个错误TypeErro
  • 为什么在 Python 2.4 中使用 Unicode 数据会出现 ASCII 编码错误,而在 2.7 中却不会?

    我有一个程序 当在 Python 2 7 中运行时 会生成正确的 Unicode 输出到标准输出 当在 Python 2 4 中运行时 我得到UnicodeEncodeError ascii codec can t encode chara
  • 如何从Python中的字符串中提取变量名称和值

    我有一根绳子 data var1 id 12345 name John White python中有没有办法将var1提取为python变量 更具体地说 我对字典变量感兴趣 这样我就可以获得变量的值 id和name python 这是由提供
  • 按元组分隔符拆分列表

    我有清单 print L I WW am XX newbie YY ZZ You WW are XX cool YY ZZ 我想用分隔符将列表拆分为子列表 ZZ print new L I WW am XX newbie YY ZZ You
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • Python 将日志滚动到变量

    我有一个使用多线程并在服务器后台运行的应用程序 为了无需登录服务器即可监控应用程序 我决定包括Bottle http bottlepy org为了响应一些HTTP端点并报告状态 执行远程关闭等 我还想添加一种查阅日志文件的方法 我可以使用以
  • 创建嵌套字典单行

    您好 我有三个列表 我想使用一行创建一个三级嵌套字典 i e l1 a b l2 1 2 3 l3 d e 我想创建以下嵌套字典 nd a 1 d 0 e 0 2 d 0 e 0 3 d 0 e 0 b a 1 d 0 e 0 2 d 0
  • 使用 NumPy 将非均匀数据从文件读取到数组中

    假设我有一个如下所示的文本文件 33 346 1223 10 23 11 23 12 23 13 23 14 23 15 23 16 24 10 24 11 24 12 24 13 24 14 24 15 24 16 25 14 25 15
  • 使用yield 进行字典理解

    作为一个人为的例子 myset set a b c d mydict item yield join item s for item in myset and list mydict gives as cs bs ds a None b N
  • 如何在 OSX 上安装 numpy 和 scipy?

    我是 Mac 新手 请耐心等待 我现在使用的是雪豹 10 6 4 我想安装numpy和scipy 所以我从他们的官方网站下载了python2 6 numpy和scipy dmg文件 但是 我在导入 numpy 时遇到问题 Library F
  • 如何读取Python字节码?

    我很难理解 Python 的字节码及其dis module import dis def func x 1 dis dis func 上述代码在解释器中输入时会产生以下输出 0 LOAD CONST 1 1 3 STORE FAST 0 x
  • 从 Twitter API 2.0 获取 user.fields 时出现问题

    我想从 Twitter API 2 0 端点加载推文 并尝试获取标准字段 作者 文本 和一些扩展字段 尤其是 用户 字段 端点和参数的定义工作没有错误 在生成的 json 中 我只找到标准字段 但没有找到所需的 user fields 用户

随机推荐

  • [人工智能-综述-9]:科学计算、大数据分析、人工智能、机器学习、深度学习全面比较

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 https blog csdn net HiWangWenBing article details 124245520 目录 第1章 sci
  • CORS漏洞原理分析

    CORS跨域漏洞原理分析 CORS全称为Cross Origin Resource Sharing即跨域资源共享 用于绕过SOP 同源策略 来实现跨域资源访问的一种技术 而CORS漏洞则是利用CORS技术窃取用户敏感数据 以往与CORS漏洞
  • Tika错误总结

    参考链接 https my oschina net u 3091870 blog 3032408 1 错误 NoSuchMethodError org apache commons compress archivers ArchiveStr
  • libspark,不懂日文怎么学……

    由于工作的需求 还有我未来的规划 决心研究 AR 这必然要研究 FLARToolKit 于是我找到了 libspark 接着我发现 这里面的东西太多了太强大了 而且是日本人的开源项目 所以里面很多源码注释都是日文的 于是我今天申请了goog
  • 微分方程(人口预测与传染病模型)

    一 定义 微分方程 含导数或微分的方程 微分方程的阶数 所含导数或微分的最高阶数 如y 2y 2x 0是三阶微分方程 微分方程的解 使得微分方程成立的函数 例如y 2x 0的解可以为x 或者x 1 微分方程的通解和特解 特解为满足等式条件即
  • React 的七个值得推荐的动画库

    今天 Web 应用程序用户界面有许多吸引用户的元素 为了满足这些需求 开发人员不得不寻找新的方法来实现带有动画和过渡的 UI 因此 开发了专门的库和工具来处理 Web 应用程序中的动画 在本文中 将讨论一些优秀的 React 动画库 以便于
  • 基于大数据的智能消防可视化平台

    0 前言 Hi 大家好 今天给大家介绍一个大数据可视化项目 大家可以用于自己的课设或毕设 可以灵活耦合任意数据 为自己的项目添加灵活的可视化动态效果 今天要分享的是 基于大数据的智能消防可视化平台 包含内容 完整可视化实现源码 html一键
  • redis5以上集群环境搭建

    1 系统环境及安装包准备 1 1 服务器 一台Centos7 服务器或虚拟机 ip地址 192 168 56 55 1 2 网络规划 master节点 slave节点 192 168 56 55 8001 192 168 56 55 800
  • 什么是接口测试呢

    什么是接口测试呢 测试人员通常所说的 接口测试 是针对系统各组件之间接口的一种测试 它属于功能测试 接口能测出普通界面操作难以发现的问题 如 我们都知道系统是由前端后端组成 一些数据在前端做了校验 后端同样也需要校验才能保证安全 界面操作显
  • 机器入门学习方法与学习路径

    机器学习方法与学习路径 1 数学基础 有无数激情满满大步向前 誓要在机器学习领域有一番作为的同学 在看到公式的一刻突然就觉得自己狗带了 是啊 机器学习之所以相对于其他开发工作 更有门槛的根本原因就是数学 每一个算法 要在训练集上最大程度拟合
  • 当四款AI大模型遇上考公真题,谁被难倒了?

    在当今社会 人工智能 AI 正以不可思议的速度发展 并在各个领域崭露头角 给人们的生活和工作带来许多便利 AI大模型被誉为人类 第二大脑 成为人们学习 生活 工作的 智能助手 公务员考试在我国教育领域独具特色 受到了众多考生的关注和青睐 众
  • postcss-px-to-viewport-8-plugin 适配

    postcss px to viewport 8 plugin 适配 简述 postcss px to viewport 8 plugin 是一个PostCSS插件 用于将以像素为单位的样式转换为视口单位 如vw vh 的样式 实现移动端适
  • java 输出编码_从代码看java输入输出中的编码和解码

    在java中 采用Unicode编码 英文字符和汉字都占两个字节 下面的代码都是在中文操作系统上执行的 系统采用GBK编码 1 看一下下面这段代码的编码和解码 当我们在键盘上敲入字符的时候 其采用的是GBK编码 比如我们敲入 b 它占两个字
  • 进度条类组件SeekBar

    介绍 拖动条与进度条类似 所不同的是 拖动条允许用户拖动滑块来改变值 通常用于实现对某种数值的调节 基本语法
  • 【数据结构】图解八大排序(下)

    文章目录 一 前言 二 快速排序 1 hoare 版 2 挖坑法 3 前后指针法 4 快排的非递归实现 5 时空复杂度分析 三 归并排序 1 递归实现 2 非递归实现 四 计数排序 一 前言 在上一篇文章中 我们已经学习了五种排序算法 还没
  • 【Linux】基础命令

    操作系统OS 向下直接控制硬件 向上能够支持软件的运行 是个软件 一 操作系统 英语 operating system 缩写作 OS 是管理计算机硬件与软件资源的计算机程序 同时也是计算机系统的内核与基石 操作系统需要处理如管理与配置内存
  • QT 一个控件的坐标怎么相对固定显示在另一个控件上(坐标系)

    先给子控件设置它依赖于哪一个控件上显示 void setTableViewParent QWidget parent 0 void ComplexCombox setTableViewParent QWidget parent m tabl
  • 第十一届蓝桥杯——矩阵(应试做法---卡特兰数)

    前言 直接把它当做一道规律题来做 矩阵 问题描述 把 1 2020 放在 2 1010 的矩阵里 要求同一行中右边的比左边大 同一列中下边的比上边的大 一共有多少种方案 答案很大 你只需要给出方案数除以 2020 的余数即可 答案提交 这是
  • [Pyecharts]数据可视化 大屏展示

    Pyecharts 大屏展示 练习 前言 1 条件 2 代码及展示 时间序列曲线图 时间轮播 24小时轮播 1 2 3 拥堵路段词云图 拥堵榜 通畅榜 水球图 标题 交通流量预测可视化大屏 合并 调整 3 总结 前言 参考 pyechart
  • NumPy通用函数、利用NumPy数组进行数据处理

    文章目录 一 NumPy通用函数 1 什么是通用函数 2 常见的一元通用函数如下 3 常见的二元通用函数如下表 二 利用NumPy数组进行数据处理 1 将条件逻辑转为数组运算 2 数组统计运算 3 数组排序 sort 方法没有返回值 4 检