Numpy 通用函数

时间:2023-01-24 08:17:20

frompyfunc的调用格式为frompyfunc(func, nin, nout),其中func是计算单个元素的函数,nin是此函数的输入参数的个数,nout是此函数的返回值的个数

# 注:用frompyfunc得到的函数计算出的数组元素的类型为object,因为frompyfunc函数无法保证Python函数返回的数据类型都完全一致

1. 创建通用函数(步骤)
# 定义一个python函数

import numpy as np

def answer(a):
result = np.zeros_like(a)
result.flat = 42
return result ufunc = np.frompyfunc(answer, 1, 1)
print (ufunc(np.arange(4)))
# [array(42) array(42) array(42) array(42)]

  

# 对二维数组进行操作

A = ufunc(np.arange(4).reshape(2,2))
print (A)
#[[array(42) array(42)]
# [array(42) array(42)]]

  

# 解析:定义了一个Python函数。其中,我们使用zeros_like函数根据输入参数的形状初始化一个全为0的数组,然后利用ndarray对象的flat属性将所有的数组元素设置为“终极答案”其值为42

2. 通用函数的方法
通用函数有四个方法,不过只对输入两个参数、输出一个参数的ufunc对象有效

# add 上调用通用函数的方法

(1). reduce方法 (对数组的reduce计算结果等价于对数组元素求和)

import numpy as np
B = np.arange(9)
B1 = np.add.reduce(B)
print (B1)
# 36

(2). accumulate方法(可以递归作用于输入数组,将存储运算的中间结果并返回)

B2 = np.add.accumulate(B)
print (B2)
# [ 0 1 3 6 10 15 21 28 36]

  

(3). reduceat方法需要输入一个数组以及一个索引值列表作为参数

B3 = np.add.reduceat(B,[0,5,2,7])
print (B3)
# [10 5 20 15]

# 解析:第一步用到索引值列表中的0和5,实际上就是对数组中索引值在0到5之间的元素进行reduce操作。

print (np.add.reduce(B[0:5]))

  

# 第二步用到索引值5和2。由于2比5小,所以直接返回索引值为5的元素

print (np.add.reduce(B[5]))

  

# 第三步用到索引值2和7。这一步是对索引值在2到7之间的数组元素进行reduce操作

print (np.add.reduce(B[2:7]))

  

# 第四步用到索引值7。这一步是对索引值从7开始直到数组末端的元素进行reduce操作

print (np.add.reduce(B[7:]))

(4). outer方法返回一个数组,它的秩(rank)等于两个输入数组的秩的和。它会作用于两个输入数组之间存在的所有元素对

B4 = np.add.outer(np.arange(3),B)
print (B4)
#[[ 0 1 2 ..., 6 7 8]
# [ 1 2 3 ..., 7 8 9]
# [ 2 3 4 ..., 8 9 10]]

  

Numpy 通用函数的更多相关文章

  1. numpy通用函数

    numpy的通用函数可以对数组进行向量化操作,可以提高数组元素的重复计算的效率. 一.numpy的算数运算符都是对python内置符的封装 算数运算符 >>> import nump ...

  2. 金融量化分析【day110】:NumPy通用函数

    一.通用函数 能同时对数组中所有元素进行运算的函数 1.一元函数 1.sqrt 2.ceil 3.modf 4.isnan 5.abs 2.二元函数 1.maxinum 二.数学和统计方法 1.sum ...

  3. 初探numpy——numpy常用通用函数

    numpy通用函数 快速的逐元素数组函数,也可以称为ufunc,对ndarray数据中的元素进行逐元素操作的函数 一元通用函数 函数名 描述 abs.fabs 取绝对值 sqrt 计算平方根,等同于a ...

  4. 科学计算工具-Numpy初探

    Numpy基础数据结构 Numpy数组是一个多维数组,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的原数据 导入该库: import numpy as np 多维数组ndarray ...

  5. NumPy的基本用法

    NumPy简介:NumPy是高性能科学计算和数据分析的基础包.是pandas等其他各种工具的基础NumPy主要功能:ndarray,一个多维数组结构,高效且节省空间无需循环对数组数据进行快速运算的数学 ...

  6. 01. Numpy模块

    1.科学计算工具-Numpy基础数据结构 1.1.数组ndarray的属性 NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成:① 实际的数据② 描述这些数据的元数据 注意数组格式, ...

  7. NumPy 基础用法

    NumPy 是高性能科学计算和数据分析的基础包. 它是 pandas 等其他各种工具的基础. 主要功能: ndarray 一个多维数组结构, 高效且节省空间 无需循环对整组数据进行快速运算的数学函数 ...

  8. 最直白、最易懂的话带你认识和学会---数据分析基础包之numpy的使用

    前言 numpy是一个很基础很底层的模块,其重要性不言而喻,可以说对于新手来说是最基础的入门必须要学习的其中之一.在很多数据分析,深度学习,机器学习亦或是人工智能领域的模块中,很多的底层都会用到这个模 ...

  9. numpy模块

    NumPy简介: NumPy 是高性能科学计算和数据分析的基础包:它是pandas等其他工具的基础. NumPy的主要功能: 1. ndarray,一个多维数组结构,高效且节省空间 (最主要的功能) ...

随机推荐

  1. JAVA利用Zip4j解压缩【转】

    官方地址:http://www.lingala.net/zip4j/(需要FQ) jar包:http://pan.baidu.com/s/145hwI 演示包:http://pan.baidu.com ...

  2. SSH公钥认证+优化

    一 ssh公钥认证流程: sshclinet机器:产生公私钥(公钥相当于一把锁) sshclient:将公钥发给sshserver(抛出锁子) sshclinet去连sshserver不需要密钥   ...

  3. python compile

    compile(source, filename, mode[, flags[, dont_inherit]]) 参数source:字符串或者AST(Abstract Syntax Trees)对象. ...

  4. struts2 里escape="false"的问题?

    <s:property value="html" escape="false"/> 没有name 不知道你是怎么取的值 <s:hidden n ...

  5. 个人工作中ssd、audio python脚本总结

    1.os.system(cmd)或者os.popen(cmd)调用外部命令 cmd中需要注意特殊字符的转义功能,如: USBSTOR\DISK&VEN_GENERIC-&PROD_SD ...

  6. POI生成word文档完整案例及讲解

    一,网上的API讲解 其实POI的生成Word文档的规则就是先把获取到的数据转成xml格式的数据,然后通过xpath解析表单式的应用取值,判断等等,然后在把取到的值放到word文档中,最后在输出来. ...

  7. 分布式监控系统开发【day37】&colon;表结构设计(二)

    一.表结构关系图 二.表结构需求讨论 1.主机表(Host) 1.解决了什么问题? 1.如果我不想让它监控了,就有一个开关的东西给它禁掉2.主机存活状态检测间隔 2.代码 class Host(mod ...

  8. Linux 日志分析脚本

    #### 以下代码,若出现无法使用,请根据底下图片,更改参数.根据 apache 日志格式修改 查看 apache 进程ps aux | grep httpd | grep -v grep | wc ...

  9. mysql5&period;6 主从同步配置

    一:配置前说明 在centos 6环境下配置 mysql 5.6主从同步 准备两台测试的虚拟机,2台虚拟机上都安装mysql软件,并开启mysql服务主master : 192.168.1.110从s ...

  10. jsp页面中注释 &lt&semi;&excl;-- --&gt&semi; 和&lt&semi;&percnt;-- --&percnt;&gt&semi; 的区别

    jsp页面中注释 <!-- --> 和<%-- --%> 的区别 原创 2016年09月01日 17:55:44 标签: jsp注释 5605 今天发现一个问题:在jsp代码中 ...