numpy学习笔记(4),通用函数

7. 通用函数

通用函数(ufunc)使得NumPy数组操作用于数组中的每一个元素。通用函数是C语言实现的,这样会取得更快的执行效率。

7.1 数学运算函数

7.1.1 算术运算函数
通用函数 说明
add(x1, x2, y) y = x1 + x2
substrace(x1, x2, y) y = x1 - x2
mulitply(x1, x2, y) y = x1 * x2
divide(x1, x2, y) y = x1 / x2
floor_divide(x1, x2, y) y = x1 // x2
power(x1, x2, y) y = x1 ** x2
python 复制代码
import numpy as np
a = np.array([1, 2])
b = np.array([3, 4])
# 保存结果的数组需要预先定义,形状要与计算结果数组相同
c = np.zeros((2), dtype=np.int32)
np.add(a, b, c)
c
复制代码
array([4, 6])
python 复制代码
# 直接将计算结果赋值给变量也可以,更方便
d = np.add(a, b)
d
复制代码
array([4, 6])

7.1.2 关系运算函数

通用函数 说明
equal(x1, x2,y) y = (x1 == x2)
not_equal(x1, x2,y) y = (x1 != x2)
less(x1, x2,y) y = (x1 < x2)
less_equal(x1, x2,y) y = (x1 <= x2)
greater(x1, x2,y) y = (x1 > x2)
greater_equal(x1, x2,y) y = (x1 >= x2)
python 复制代码
a = np.array([1, 20])
b = np.array([3, 4])
c = np.equal(a, b)
c
复制代码
array([False, False])
python 复制代码
d = np.not_equal(a, b)
d
复制代码
array([ True,  True])
python 复制代码
f = np.less(a, b)
f
复制代码
array([ True, False])
python 复制代码
e = np.zeros((2))
# 如果用第三个参数作为返回值,返回类容用0,1表示false,true
np.less(a, b, e)
复制代码
array([1., 0.])

7.2 自定义通用函数

自定义通用函数(ufunc)数组操作将用于数组中的每一个元素,语法格式如下:

python 复制代码
ufunc = numpy.frompyfunc(func, nin, nout)
  • func:任何python函数,可以是内置的,也可以是自定义函数
  • nin:传入数组参数个数
  • nout:返回数组个数

该函数返回一个自定义的通用函数,类型是numpy.ufunc。

例子1:定义一个通用函数abs_ufunc,abs是pyhton内置函数

python 复制代码
abs_ufunc = np.frompyfunc(abs, 1, 1)

通过abs_ufunc可以对数组的每一个元素操作

python 复制代码
abs_ufunc = np.frompyfunc(abs, 1, 1)
a = np.array([[-1, -2], [-3, -4]])
# 对数组里的每一个元素执行abs函数
b = abs_ufunc(a)
b
复制代码
array([[1, 2],
       [3, 4]], dtype=object)

例子2:输入2个参数,输出2个数组:

定义plus_sub函数,实现两个数相加,相减运算,返回元组

python 复制代码
 def plus_sub(x, y):
     return x + y, x - y

定义通用函数plus_sub_ufunc,两个入参,2个返回值

python 复制代码
plus_sub_ufunc = np.frompyfunc(plus_sub, 2, 2)
python 复制代码
def plus_sub(x, y):
    return x + y, x - y

plus_sub_ufunc = np.frompyfunc(plus_sub, 2, 2)

a = np.array([[1, 2], [3, 4]])
b = np.array([[3, 4], [5, 6]])
plus, sub = plus_sub_ufunc(a, b)
print("加法结果:", plus, "\n减法结果:", sub)
复制代码
加法结果: [[4 6]
 [8 10]] 
减法结果: [[-2 -2]
 [-2 -2]]
相关推荐
星夜夏空9913 分钟前
FreeRTOS学习(6)——任务创建
单片机·嵌入式硬件·学习
nashane33 分钟前
HarmonyOS 6学习:保存图片预览空白?沙箱路径转URI的“视觉修复”术
学习·华为·harmonyos
IronMurphy35 分钟前
AI Agent 学习day5 MCP 协议入门与实践
网络·人工智能·学习
li星野39 分钟前
LLMLingua:用小型模型“剪枝”大语言模型提示词,让长文本不再昂贵
人工智能·python·学习·语言模型·剪枝
峥嵘life44 分钟前
Android getprop 属性限制详解:User 版本属性获取问题分析
android·开发语言·python·学习
石工记1 小时前
CTO如何落地AI?从0到1的实战路径
人工智能·python·django·flask·numpy·pandas·pyqt
星夜夏空991 小时前
FreeRTOS学习(5)——内存映射
开发语言·学习
Quz1 小时前
将Markdown文件推送到浮墨笔记
人工智能·笔记
wuxinyan1231 小时前
工业级大模型学习之路031:Streamlit 高级功能多会话管理和知识库管理
python·学习·智能体
Brilliantwxx1 小时前
【C++】 深入理解红黑树:实现与原理全解
数据结构·c++·笔记·算法·青少年编程·红黑树