python手记(17)

import numpy as np
x=np.array([[1, 2, 3],[4, 5, 6]])
print x
def testv1(x):
    if x>3:
        x=x*2
    else:
        x=-x
    return x

mytest=np.frompyfunc(testv1,1,1)
z=mytest(x)
print z
z=z.astype(x.dtype)
print z.dtype


>>> 
[[1 2 3]
 [4 5 6]]
[[-1 -2 -3]
 [8 10 12]]
int32
>>> 

使用numpy的自定义ufunc函数

自定义ufunc函数

通过NumPy提供的标准ufunc函数,可以组合出复杂的表达式在C语言级别对数组的每个元素进行计算。但有时这种表达式不易编写,而对每个元素进行计算的程序却很容易用Python实现,这时可以用frompyfunc()将一个计算单个元素的函数转换成ufunc函数。这样就可以方便地用所产生的ufunc函数对数组进行计算了。

通过frompyfunc()可以将计算单个值的函数转换为一个能对数组的每个元素进行计算的ufunc函数。frompyfunc()的调用格式为:

frompyfunc(func, nin, nout)

其中func是计算单个元素的函数,nin是func的输入参数的个数,nout是func的返回值个数。

返回的数组的元素类型是object,因此还需要再调用数组的astype()方法将其转换
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值