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数组进行数据处理 的相关文章

  • 用于将 cython 中的许多 C++ 类包装到单个共享对象的项目结构

    我在文档 邮件列表和这个问题在这里 https stackoverflow com questions 10300660 cython and distutils 但我想得到一个更直接的答案来解决我的具体情况 我正在通过尝试一点一点地包装我
  • 无法“安装”plpython3u - postgresql

    我正在尝试在 postgresql 中使用 python 语言 像这样的事情 create or replace function test a integer returns integer as if a 2 0 return even
  • Django 管理员在模型编辑时间歇性返回 404

    我们使用 Django Admin 来维护导出到我们的一些站点的一些数据 有时 当单击标准更改列表视图来获取模型编辑表单而不是路由到正确的页面时 我们会得到 Django 404 页面 模板 它是偶尔发生的 我们可以通过重新加载三次来重现它
  • 将数据从 python pandas 数据框导出或写入 MS Access 表

    我正在尝试将数据从 python pandas 数据框导出到现有的 MS Access 表 我想用已更新的数据替换 MS Access 表 在 python 中 我尝试使用 pandas to sql 但收到错误消息 我觉得很奇怪 使用 p
  • OpenCV Python cv2.mixChannels()

    我试图将其从 C 转换为 Python 但它给出了不同的色调结果 In C Transform it to HSV cvtColor src hsv CV BGR2HSV Use only the Hue value hue create
  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • 如何使用Conda下载python包并随后离线安装?

    我知道通过 pip 我可以使用以下命令下载 Python 包 但 pip install 破坏了我的内部包依赖关系 当我做 pip download
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • 基于代理的模拟:性能问题:Python vs NetLogo & Repast

    我正在 Python 3 中复制一小段 Sugarscape 代理模拟模型 我发现我的代码的性能比 NetLogo 慢约 3 倍 这可能是我的代码的问题 还是Python的固有限制 显然 这只是代码的一个片段 但 Python 却花费了三分
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • Pygame:有没有简单的方法可以找到按下的任何字母数字的字母/数字?

    我目前正在开发的游戏需要让人们以自己的名义在高分板上计时 我对如何处理按键有点熟悉 但我只处理过寻找特定的按键 有没有一种简单的方法可以按下任意键的字母 而不必执行以下操作 for event in pygame event get if
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 向 Altair 图表添加背景实心填充

    I like Altair a lot for making graphs in Python As a tribute I wanted to regenerate the Economist graph s in Mistakes we
  • 如何在seaborn displot中使用hist_kws

    我想在同一图中用不同的颜色绘制直方图和 kde 线 我想为直方图设置绿色 为 kde 线设置蓝色 我设法弄清楚使用 line kws 来更改 kde 线条颜色 但 hist kws 不适用于显示 我尝试过使用 histplot 但我无法为
  • 如何在 Python 中追加到 JSON 文件?

    我有一个 JSON 文件 其中包含 67790 1 kwh 319 4 现在我创建一个字典a dict我需要将其附加到 JSON 文件中 我尝试了这段代码 with open DATA FILENAME a as f json obj js
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc

随机推荐

  • [人工智能-综述-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 检