Numpy 通用函数
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 通用函数的更多相关文章
- numpy通用函数
numpy的通用函数可以对数组进行向量化操作,可以提高数组元素的重复计算的效率. 一.numpy的算数运算符都是对python内置符的封装 算数运算符 >>> import nump ...
- 金融量化分析【day110】:NumPy通用函数
一.通用函数 能同时对数组中所有元素进行运算的函数 1.一元函数 1.sqrt 2.ceil 3.modf 4.isnan 5.abs 2.二元函数 1.maxinum 二.数学和统计方法 1.sum ...
- 初探numpy——numpy常用通用函数
numpy通用函数 快速的逐元素数组函数,也可以称为ufunc,对ndarray数据中的元素进行逐元素操作的函数 一元通用函数 函数名 描述 abs.fabs 取绝对值 sqrt 计算平方根,等同于a ...
- Python数据科学手册-Numpy数组的计算,通用函数
Python的默认实现(CPython)处理某些操作非常慢,因为动态性和解释性, CPython 在每次循环必须左数据类型的检查和函数的调度..在编译是进行这样的操作.就会加快执行速度. 通用函数介绍 ...
- 科学计算工具-Numpy初探
Numpy基础数据结构 Numpy数组是一个多维数组,称为ndarray.其由两部分组成: 实际的数据 描述这些数据的原数据 导入该库: import numpy as np 多维数组ndarray ...
- NumPy的基本用法
NumPy简介:NumPy是高性能科学计算和数据分析的基础包.是pandas等其他各种工具的基础NumPy主要功能:ndarray,一个多维数组结构,高效且节省空间无需循环对数组数据进行快速运算的数学 ...
- 01. Numpy模块
1.科学计算工具-Numpy基础数据结构 1.1.数组ndarray的属性 NumPy数组是一个多维数组对象,称为ndarray.其由两部分组成:① 实际的数据② 描述这些数据的元数据 注意数组格式, ...
- NumPy 基础用法
NumPy 是高性能科学计算和数据分析的基础包. 它是 pandas 等其他各种工具的基础. 主要功能: ndarray 一个多维数组结构, 高效且节省空间 无需循环对整组数据进行快速运算的数学函数 ...
- 最直白、最易懂的话带你认识和学会---数据分析基础包之numpy的使用
前言 numpy是一个很基础很底层的模块,其重要性不言而喻,可以说对于新手来说是最基础的入门必须要学习的其中之一.在很多数据分析,深度学习,机器学习亦或是人工智能领域的模块中,很多的底层都会用到这个模 ...
随机推荐
- finecms如何控制调用子栏目的数量
finecms如何控制调用子栏目的数量?比如只要调用栏目id为23下的3个子栏目要怎么写?我们把num=3放后面不能实现,放在return前面就可以了,原来是顺序的问题,return只能放最后 {li ...
- java poi生成excel(个人例子js-jsp-java)
js代码: function exportRepQudl(){ if(confirm("导出输出页面内容?")){ var id = $("input[name='id' ...
- CMDB资产管理
.传统运维和自动化运维的区别: 传统运维: 1.项目上线: a.产品经理前期调研(需求分析) b.和开发进行评审 c.开发进行开发 d.测试进行测试 e.交给运维人员进行上线 上线: 直接将代码交给运 ...
- 桌面图标未读消息(小米,sony,三星手机)
新消息来了,在桌面的Laucher图标上显示新消息数 /** * 应用桌面图标未读消息显示工具类 * 只支持 小米,三星和索尼 */ public class BadgeUtil { final st ...
- 异常的Error与Exception
一般不可处理:Error:是jvm抛出的严重性问题.已经严重影响程序执行 例如:内存溢出等情况这种问题发生一般不针对处理,直接修改程序. 可处理:Exception: 该体系的特点:子类的后缀名都是 ...
- 50A
#include <iostream> using namespace std; int main() { int m, n; cin>>m>>n; cout< ...
- 算法bug修复
问题一: 160length:4length:4length:4length:4290length:2length:2160length:5length:5length:5length:5length ...
- 通过socket实现http通讯代码理解
1.首先构造http协议报头: String dd = "GET http://www.baidu.com HTTP/1.1" + "\r\n" + " ...
- Permission denied: user=root, access=WRITE, inode="/":hadoopuser:supergroup:drwxr-xr-x
提示往HDFS写文件是不容许的. 在conf/hdfs-site.xml中加入: <property> <name>dfs.permissions</name> & ...
- 查看CPU信息
基础知识 示例: 开发机器是1个物理CPU,4核8线程,Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz 基础 i3:2核模拟4线程,无睿频 i5:4核模拟4线程,有睿频 ...