文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python numpy.power()数组元素怎么求n次方

2023-06-14 05:02

关注

本篇内容介绍了“python numpy.power()数组元素怎么求n次方”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

如下所示:

numpy.power(x1, x2)

数组的元素分别求n次方。x2可以是数字,也可以是数组,但是x1和x2的列数要相同。

 >>> x1 = range(6) >>> x1 [0, 1, 2, 3, 4, 5] >>> np.power(x1, 3) array([ 0,  1,  8, 27, 64, 125])
 >>> x2 = [1.0, 2.0, 3.0, 3.0, 2.0, 1.0] >>> np.power(x1, x2) array([ 0.,  1.,  8., 27., 16.,  5.])
 >>> x2 = np.array([[1, 2, 3, 3, 2, 1], [1, 2, 3, 3, 2, 1]]) >>> x2 array([[1, 2, 3, 3, 2, 1],    [1, 2, 3, 3, 2, 1]]) >>> np.power(x1, x2) array([[ 0, 1, 8, 27, 16, 5],    [ 0, 1, 8, 27, 16, 5]])

补充:python求n次方的函数_python实现pow函数(求n次幂,求n次方)

类型一:求n次幂

实现 pow(x, n),即计算 x 的 n 次幂函数。其中n为整数。pow函数的实现——leetcode

解法1:暴力法

不是常规意义上的暴力,过程中通过动态调整底数的大小来加快求解。代码如下:

class Solution:def myPow(self, x: float, n: int) -> float:judge = Trueif n<0:n = -njudge = Falseif n==0:return 1final = 1 # 记录当前的乘积值tmp = x # 记录当前的因子count = 1 # 记录当前的因子是底数的多少倍while n>0:if n>=count:final *= tmptmp = tmp*xn -= countcount +=1else:tmp /= xcount -= 1return final if judge else 1/final

解法2:根据奇偶幂分类(递归法,迭代法,位运算法)

如果n为偶数,则pow(x,n) = pow(x^2, n/2);

如果n为奇数,则pow(x,n) = x*pow(x, n-1)。

递归代码实现如下:

class Solution:def myPow(self, x: float, n: int) -> float:if n<0:n = -nreturn 1/self.help_(x,n)return self.help_(x,n)def help_(self,x,n):if n==0:return 1if n%2 == 0: #如果是偶数return self.help_(x*x, n//2)# 如果是奇数return self.help_(x*x,(n-1)//2)*x

迭代代码如下:

class Solution:def myPow(self, x: float, n: int) -> float:judge = Trueif n < 0:n = -njudge = Falsefinal = 1while n>0:if n%2 == 0:x *=xn //= 2final *= xn -= 1return final if judge else 1/final

python位运算符简介

其实跟上面的方法类似,只是通过位运算符判断奇偶性并且进行除以2的操作(移位操作)。代码如下:

class Solution:def myPow(self, x: float, n: int) -> float:judge = Trueif n < 0:n = -njudge = Falsefinal = 1while n>0:if n & 1: #代表是奇数final *= xx *= xn >>= 1 # 右移一位return final if judge else 1/final

类型二:求n次方

实现 pow(x, n),即计算 x 的 n 次幂函数。其中x大于0,n为大于1整数。

解法:二分法求开方

思路就是逐步逼近目标值。以x大于1为例:

设定结果范围为[low, high],其中low=0, high = x,且假定结果为r=(low+high)/2;

如果r的n次方大于x,则说明r取大了,重新定义low不变,high= r,r=(low+high)/2;

如果r的n次方小于x,则说明r取小了,重新定义low=r,high不变,r=(low+high)/2;

代码如下:

class Solution:def myPow(self, x: float, n: int) -> float:# x为大于0的数,因为负数无法开平方(不考虑复数情况)if x>1:low,high = 0,xelse:low,high =x,1while True:r = (low+high)/2judge = 1for i in range(n):judge *= rif x >1 and judge>x:break # 对于大于1的数,如果当前值已经大于它本身,则无需再算下去if x <1 and judgeif abs(judge-x)<0.0000001: # 判断是否达到精度要求print(pow(x,1/n)) # pow函数计算结果return relse:if judge>x:high = relse:low = r

“python numpy.power()数组元素怎么求n次方”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯